Skip to main content

Full text of "68 Micro Journal Volume 09 Number 10"

See other formats


Singapote t 

J M S94f 



-33 50 

30 



$2.95. 



MICRO JOURMM. 



Motoi-nl5l VME - MACINT0SH - s 50 

1VIUIUI Ul<» &. Other 68XXX Systemi 



Sr stem a 

6809 68008 68000 68010 68020 68030 

The Migtznte for Motorola CPU Deviou FLEX 

Jf %lstr Contributor lemmai 



OS-9 



SK'DOS 



This Issue: 



Plmr 



Mac-Watch pJZ8 

"C" User Notes p.12 

Basically OS-9 p.7 

PASCAL p.47 

Software User Notes p. 18 

- Tnl lUtklng ft t,o(k*n> Speaking And Lots Mart! 



VOLUME IX ISSUE X • Devoted to the 68XXX User • October 1987 

The Grandfather of "DeskToo Publishing™" 



m 



* ■.-■*Lflf*T.- , w-^K 












GESPAC Gives You 
68000 Performance at 8-bit Prices. 




MPU-4B SNI00030 1 
Actual Size 



introducing another Price / Performance 
breakthrough from GESPAC: A complete 68000 
CPU module for $395 unit price. The GESMPU-48. 

Wherever you thought of using an 8-bit 
microprocessor to do a job, you con now use the 
16/32 -bit GESMPU-48 instead. It will do the job, 
better, faster, and best-of-all for the same money. 

On a single height Eurocard, we have packed an 
8 MHz 68000 microprocessor (16 MHz optional), 
four sockets for up to 64 Kilobytes of zero-wait-states 
CMOS RAM and up to 128 Kilobytes of EPROM, 
one RS-232 serial port, and three 16-bit timers. 

The GESMPU-48 is fully expandable through 
the standard G-64 bus, to accommodate up to 
16 Megabytes of external memory. You can add 
any of more than 300 I/O modules available from 
GESPAC and o growing numbers of independent 
G-64 bus vendors. 



To make your programming tasks easier, 
GESPAC supports the GESMPU-48 with the OS-9« 
and PDOS® real-time, multi-tasking operating 
systems and most popular high level languages 
and software development tools. 




.00 



Single Quantity 



$316 • 

IDOpiKM 



If you too like the idea of getting more for 
less, contact us today to receive information 
on the GESMPU-48 and the G-64 bus concept 
from GESPAC— the leader in single Eurocard 
microcomputer products worldwide. 

Call Toll Free 1-800-4-GESPAC 
or Call (602) 962-5559. 



33E 



IN USA -CANADA 

50A West Hoover Ave. 
Mesa, Arizona 85202 
Tel. (602) 962-5559 
Telex 386575 



INTERNATIONAL 

3, chemin des Aulx 
CH-1228 Geneva 
Tel. (022) 713400 
Telex 429989 



G^oixieMiOTmiihlmdwid.marfaolGeSMCSA OS-9 n o n^nwraef tadnoort o* Mkro*m Corp KrahaF*gnmdmxi«raTtotErmigRnmRttln<MtA!nc 



THE GMX 020BUG DEBUGGER/ DIAGNOSTIC PACKAGE 



This extensive firmware package provides a broad range ol 
program development tools and a complete suite ol diagnostic 
programs lor exercising GMX Mlcro-20 hardware 

The debugger includes commands lor displaying and modifying 
registers am) memory. It the optional 68681 Floating-Point 
Coprocessor is installed, Its registers are also accessible Memory 
can be displayed in hexadecimal and ASCII formal, as tloaiing-point 
values (single, double, extended or packed format), or as 
disassembled instructions (including FPC Instructions). Memory 
modify can be done with hexadecimal values, with ASCII strings, 
with floating-point values, or with a one-line assembler which 
supporis Ihe lull 68020 Instruction set (although not the FPC 
instructions). Block move, fill, and search are also available 

Several dilferenl modes for tracing or executing user programs 
are provided, along with a powerful breakpoint facility Programs 
and data may be downloaded from a host system or uploaded back 
to the hosl. and the GMX Micro- 20 console may be used as a host 
system terminal. A serial printer may be hooked up, and used to 
make hardcopy listings ot debugger sessions as desired. 

The diagnostic firmware includes 90 test commands and 16 
utilities Complete test suites are provided for each functional block 
ol the GMX Micro-20's hardware, including, lor example, 9 



DEBUGGING COMMANDS 



MD 


— Memory display 


MM 


— Memory modify 


MS 


— Memory set 


BF 


- Block fill 


BM 


— Block move 


BS 


- Biock search 


HO 


— Register display 


RM 


- Register modify 


OF 


- Olfsel registers 


BR 


— Breakpoint set 


MDBR 


- Breakpoint dele re 


6 


- Go» tajet code 


60 


- Oo. Welt breakpoints 


6N 


- Be, etop after 1 instruction 


6T 


— GA set temp brrakjront 


T 


— Trace 


TC 


- Traa ot champs o» Vow 


TT 


- Tract Id amp breakpoint 


LO 


- Download 


OU 


- UplOM 


VE 


— Verily download 


TM 


— Terminal mode 


PA 


— Printer attach 


NOPA 


— Remove printer 


Pf 


- Port loniiat 


TO 


— Time display 


TS 


— Time sal 


SO 


— Switch directory 


RS 


— Restart system 


OS 


— Boot operabng system 


NV 


— Non-verbose mode 


SE 


— Slop on error mode 


IE 


— Loop on error mode 


LC 


- Loop continual mode 


ST 


— Settest mode 


STL 


— Selttest with LED mode 



w 



different tests for memory, g tests for serial I/O ports, 2 tests for 
the 68881 FPC. and 9 tests tor the optional memory management 
unit. For the peripheral control interfaces (floppy disk, SASI/SCSI 
hard disk or tape), test commands support a broad range ot 
peripheral operations (read, write, format, etc.) so that the user 
may test both the Interlace and an attached device Tests are 
provided lor add-on I/O boards, Including the ARCnet Interface, I/O 
Channel interlace, and parallel and serial expansion boards 

The utility commands allow the user to execute groups ol test 
commands conveniently, repeal commands or command groups, 
enable or disable detailed fault reporting, count detected errors, or 
execute all the non-peripheral tests as a group. A switch option 
allows this last function to be invoked automatically at power-on or 
reset. Other utilities allow the user to check the slate ot the various 
jumpers and switches on the GMX Micro-20 directly 

in addition lo the Diagnostic command package. 020Bug 
contains a confidence test which is always run after power-on or 
reset. This test does a quick checkout ot the processor and the 
basic system elements that are needed lor 020Bug operation. It any 
deled is found, an error code is signalled by on-andoft blinks ol an 
LED Ml 1^ 



\^H 



DE - Oisplay errors 

ZE — Zero errors 

OP — Display pass count 

ZP — Zero pass count 

RL — Read loop ^^0 

Wl - Write loop 

DJ - Display baud rat* jumper settings 

DS - Oisplay switch 

MJ - Display MM U board lumper smngi 

M — Scan I/O expansion space 



TEST COMMANDS 



AN - AlKnot Irrterfiei tatfe 
A — Wakeup tesl 

B - DIP Switch lest 

C - Interrupts test 

— Butter test 

CA20 - On chip each* tests 

A — Basic caching 

B — Unlike tunction codes 

C - Disable 

- Clear 

FD — Floppy disk casts 

A - Set parameters 

B - Drive select toggle 

C — Side select toggle 

D — Restore 

E - Seek 

F — Formal track 

6 - Read 

H - Write 

1 - Copy twitter 

J — Compare buffer 

K - Fill butter 



B - 66881 FPC control tuneuons 
C — tick OMHator 
- Interrupt sources 

Meiaart tests 



K^> 



\ 



oft 



- Set tunction cede 

- Set «tan address 
-Set end address 

— Random jovwsjon test 
- Match address test 

- Walk-a-bit test 

— Refresh lest 

— Random byte lest 

— Program lest 

- TAS test 

- Test 0000- 1 FFF 

— Partial longword writes test 



- Read 
-Write % 

- Compare buffers 
-Fill writ) butler 
-. Test interrupt 

- Par* head 

- Formal 



SC - SASI/SCSI pmt wtlfi SCSI device 



MU 



- Memory Management tests 

A - Map RAM data test 

B — Map RAM address test 

C — Map RAM partial write test 

D — Map RAM landom data' tesl 

E — Accessed bit reset test 

F — Address mapping test 

6 — Accessed /Dirty bits test 

H - Valid/Wnte Enable test 

I — Task sije lest 
PP - Pirate) port tests 

A — Print tesl pattern 

B — Continual test bit pattern 

C — Test bit pattern lor 10 sec 



— Select drive 

— Scan data lines 

— Restore 
-Seek 

— Read 
-Write 

— Compare butlers 

— Fill write butter 

— Tesl intenupt 

— Slop drive 

— Format 



SI - Serial I/O lasts 
A - Select DUARTs 
B — internal toopback 
C — External toopback 
D — Baud rales 
E — Panly modes 
F — Character lengths 
6 — Handshake lines 
I - BREAK delect 
i — Interrupt output 
K — Continual handshake toggle 



PX - Pitailel I/O eipanslon board tests TA - Tape dihre tests 



IC - I/O Channel tests 
A - Print tesl: pattern 
B — Bit rotate 

MM - Miscellaneous hardware lasts 
A - 68881 FPC instructions 



A — Data, handsliake, and IRQ test 

B — P4 connector tesl 

C — Data and handshake toggle 

SA - SASI/SCSI pen with SASI devlca 

A — Select drive 

B — Scan data lines 

C - Restore 

D - Seek 



A — Rewind 

B - Read 

C - Write 

E — Compare butters 

F — Fill write butter 

6 - Erase 



CfTlX 1337 W. 37th Place, Chicago. IL 60609 
(312) 927-5510 — TWX 910-221-4055 — FAX (312) 927-7352 



'68' Micro Journal 



October "87 



A Member of the CPI Family 



68 Micro 
Journal 



10 Years of Dedication to Motorola CPU Users 



6800 6809 68000 68010 68020 



The Originator of "DeskTop Publishing™" 

Publisher 
Don Williams Sr. 

Executive Editor 
Larry Williams 

Production Manager 
Tom Williams 

Office Manager 

Joyce Williams 

Subscriptions 
Kristi Hart 

Contributing A Associate Editors 

Ron Anderson Dr. E.M. "Bud" Pass 

Ron Voigts Art Weller 

DougLuric Dr. IhcoElbcu 

Ed Law & Hundreds More of Us 



Basically OS-9 
"C" User Notes 
Softwaie User Notes 
Password 
Ramblirgs 
V Mac-Watch 
/ Text Hacking 
,-»A Logically Speaking 
PASCAL 
h Bit Bucket 
Classifieds 
^•(■.■-••■'•■-"ijiiiLij ' 








68 MICRO JOURNAL 



Mwi-iiJlLl.IL. '««".' «uyWPrv 

COMPUTER 



PUBLISHING, INC 

"Over a Decade of Service" 





68 MICRO JOURNAL 

Computer Publishing Center 

5900 Cassandra Smith Road 

PO Box 849 

Ilixson, TN 37343 

Phone (615) 842-4600 Telex 510 600-6630 

Copyrighted © 1987 by Computer Publishing, Inc. 

68 Micro Journal is the ot igtnal "OeskT op Publishing" product and has 
conlinously published since 1978 using only micro-computers and 
special "DeskTop" software. Using fust a kit built 6800 micro-com- 

f>mer. a modi lied "ball" typewriter, and "home grown" DeskTop Pub- 
ishmjs software. None was commercially available at that time. For 
over 10 years we have baen doing "Desk! 'op Publishing") We origi- 
nated what has become traditional "DeskTop Publishing"! Today 68 
Micro Journal is acknowledged u the "Grandfather" of "DeskTop Pub 
lishing" technology. 



"Contribute Nothing • Expect Noth ing" dmw i<m 



68 Micro Journal is published 12 times a year by Computer Publishing 
Inc. Second Class Postage paid ISSN 0194-5025 at Hixson, TN. and 
additional entries. Postmaster: send form 3597 to 68 Micro Journal. 
POH 849, HiJtson, TN 37343. 



Subscription Rates 

1 Year $24.50 USA. Canada & Mexico $34.00 a year. 

Others add $12.00 a year surface, $48.00 a year Airmail. USA 

funds. 2 years $42.50. 3 years $64.50 plus additional postage 

for each additional year. 

Items or Articles for Publication 

Articles submitted for publication must include authors name, ad- 
dress, telephone number, date and a statement that the material is 
oiiginal and the property of the author. Articles submitted should be 
on diskette, OS-9. SK'DOS, FLEX, Macintosh or MS-DOS. All 
printed items should be dark type and satisfactory for photo-reproduc- 
tion. No blue ink! No hand written attic les • please) Diagrams o.k. 

Please -do net format with spaces any text inde ts. charts, etc. (source 
listingo.k.yWewilleditinaUformai i g.Texl should fa It flush left and 
use a carriage return only o indicate a paragraph end. Please write 
for ftee authors guide. 

Letters & Advertising Cop; 

letters to the Editor should be the onginalcopy, signed! Letters of grip 
as well as praise are accepts ble . We reserve the right to reject any letter 
or advertising material, for any reason we deem advisable. Advertis- 
ing Rates: Commercial please contact 68 Micro Journal Advertising 
Department. Classified advertising must be non-commercial. Mini- 
mum of SIS JO for fust IS words. Add $.60 per wotd thereafter. No 
classifieds accepted by telephone. 



October «7 



'68' Micro Journal 




EXCITING SOFTWARE FROM THE LEADER... 




OS-9 ELECTRONIC MAIL 

Hash your message on Klectronic Mail Mail is a 
screen or line oriented program that runs on your 
OS 9/680X0 systems or over OS-9/NKT You can use 
distributed mailing lists or consecutive mailing list to 
get your message delivered And received mail can be 
sent directly to your printer for immediate printout, 
spooled on a multiuser system or saved to a 11 le Mail 
features on line help and complete, easy to understand 
documentation. 
Klectronic Mail 1150 00. 



OS-9/ST 

N KW for your Atari ST! Now you can have the power of 
OS 9 on your Atari 520 or 1040 ST A true 
multi tasking environment for professional real time 
results OS 9/ST is available in two configurations: 
Personal .mil Professional. Choose either version for 
true mulli user support And all at a price that puts 
UNIX to shame 

Personal OS 9/ST combines the power of OS 9 with 
an interactive, structured liasic $150.00 



PRINT SPOOLER 

Spool it and Print it! Someone beat you lo the printer? 
Don't blow your top while you cool your heels get the 
OS 9/68000 Print Spooler and relax The full featured 
Print Spooler automatically routes and monitors the 
status of your devices and the output files to be spooled 
Now you can have a complete print spooling manage 
menl system at an affordable price 
OS 9 Print Spooler $150 00 

FORTRAN 

Crunch It! with Our New KOKTKAN 77 Compiler Now 
you have a powerful new tool to take full advantage of 
the 68000 family of microprocessors With Microware's 
KOItTKAN 77 Compiler you can generate code that uses 
system-wide modules instead of linking redundant 
copies of the standard library to each program Itesult: 
less memory, less disk space, faster loading and 
external updating! 
KOItTKAN 77 Compiler $750.00 



Professional OS 9£5T has a powerful Assembler, 
Linker and User Debugger and the tools to turn 
your Atari ST into a full C Language 
workstation $600.00 

OS-9/68020 C COMPILER 

NKW "speed demon* C Compiler! Now you can get your 
hands nn a highly optimized C language power 
tool the OS 9/68020 C Compiler When coupled with 
the MC6888! math co-processor, this compiler will let 
you'll blast through complex math functions in the 
blink of an eye All compiler/assembler/linker options 
arc controlled by an intelligent compiler executive that 
spares you from memorizing compiler options and 
module calling sequences And the compiler includes 
library functions tor memory management and system 
events, and much, much more! The new OS 9/68020 C 
Compiler is included with the Professional OS 9/68020 
System Software Package 
NewC language Compiler $750 00 



To order these exciting N KW products or for more information 



CALL TODAY! 



Microware Systems Corporation 

1900 N W I 14th Street * Des Moines. Iowa 50322 
Phone 515 224 1929* Telex 911) 520 2535 



West Coast Office 

4401 Creat American Parkway * Suite 220 

Santa Clara, California 95054 



Microware Japan. I.td 

41 19 Iloncho4 Chome. Kunabashi City *Chiba273. 

Japan * Phone0473(28)4493 'Telex 781 299 3122 



S I Pvrtotw 7 
St* ■ *:4 
S7SHJ UpptW 



OH ' 

7»(» 



Dr MWMH KM. Off*H 

D«jlH SCMMAMI 



|0 « 031 87 tl 



cwon m> 

2rtM i; 

ck wbsi 

Swi»n*nd 

■norw (OSS! 1MJJ-! 



I Lld 
X M jbnn Sum 
Luton BamtroMuf* LU< 2JE 

i0s*7i ti3tn 



PBOB» (M» 



Con 
•7Svi>t«noM 

>'•■"■■ Batcn :■ a 

NSW luli'llij 

<a 919 4917 



97 to* /** 

93400 

Fianc* 

tMx BIS40S 



Microware is on the move We have openings for Technical and Marketing Professionals. 
Send your resume (in confidence) today and find out more about these exciting opportunities. 

OS-D and BASIC09 ant tmtatnatka cl M«£/om/v and Motorola, UNIX 1$ « oadamark & Bat LatxnnylH. Inc. 



'66' Micro Journal 



Octal-* -87 



^SsTA^e^^ 



Per SBC 




% T 

Mustang-020- 

A DATA-COMP 

Hi- Speed 

Product 



DATA-COMP proudly presents the first 
Under $5000 "SUPER MICRO". 

The MUSTANG.02Q™ 



MUSTANG-020. 



The MUSTANG-020 68020 SBC 
provides a powerful, compact, 32 bit computer 
system featuring the "state of the art" Motorola 
68020 "super" micro-processor. It comes 
standard with 2 megabyte of high-speed SIP 
dynamic RAM, serial and parallel ports, floppy 
disk controller, a SASI hard disk interface for 
intelligent hard disk controllers and a battery 
backed-up time-of-day clock. Provisions are 
made for the super powerful Motorola MC6888 1 
floating point math co-processor, for heavy math 
and number crunching applications. An optional 
network interface uses one serial (four (4) 
standard, expandable to 20) as a 125/bit per 
second network channel. Supports as many as 32 
nodes. 

The MUSTANG-020 is ideally suited to a 
wide variety of applications. It provides a cost 
effective alternative to the other MC68020 
systems now available. It is an excellent 
introductoiy tool to the world of hi-power, hi- 
spaed new generation "super micros". In 
practical applications it has numerous 
applications, ranging from scientific to education. 
It is already being used by government agencies, 
labs, universities, business and practically every 
other critical applications center, worldwide, 
where Due multi-user, multi-tasking needs exist. 
The MUSTANG-020 is UNIX C level V 
compatible. Where low cost and power is a must, 
the MUSTANG-020 is the answer, as many have 
discovered. Proving that price is not the standard 
for quality! 

As a software development station, a 
general purpose scientific or small to medium 
business computer, or a super efficient real-lime 
controller in process control, the MUSTANG- 
020 is the cost effective choice. With the optional 
MC68881 floating point math co-processor 

installed, it has the capability of systems costing 
many times over it's total acquisition cost. 



DATA-COMP 



AW' 



IMS 5 bkj no BBM 



ftjL*<*,i 



With the DATA-COMP "total package", 
consisting of a heavy duty metal cabinet, 
switching power supply with if/line by-passing, 
5 inch DS/DD 80 track floppy, Xebec hard disk 
controller, 25 megabyte Winchester hard disk, 
four serial RS-232 pons and a UNIX C level V 
compatible multi-tasking, multi-user operating 
system, the price is under $5000, w/12.5 
megahertz system clock (limited lime offer). 
Most all popular high level languages are 
available at very reasonable cost. The system is 
expandable to 20 serial poits, at a cost of less 
than $65 per port, in multiples of 8 port 
expansion options. 

The system SBC fully populated, quality 
tested, with 4 serial ports pre-wired and board 
mountedis available for less that $3000. Quantity 
discounts are available for OEM and special 
applications, in quantity. All that is required to 
bnng to complete "system'' standards is a 
cabinet, power supply, disks and operating 
system. All these are available as separate items 
from DATA-COMP. 




I WOO C— W. 3n>*k Road 
' llbm.Ti mO 

Tatai HO KKMttO 



A special version of the Motorola 020- 
BUG is installed on each board. 020-BUG is a 
ROM based bebugger package with facilities for 
downloading and executing user programs from 
a host system. It includes commands for display 
and modification of memoiy, breakpoint 
capabilities, a powerful assembler/disassemble 
and numerous system diagnostics. Various 020- 
BUG system routines, such as I/O handlers are 
available for user programs. 

Normal system speed is 3-4.5 MIPS, with 
burst up to 10 MIPS, at 16.6 megahertz. 
Intelligent I/O available for some operating 
systems. 

Hands-on "actual experience sessions", 
before you buy, are available from DATA- 
COMP. Call or write for additional information 
or pricing. 



Oc**er , 87 



'68' Micro Journal 



Mustang- 020 Mustang-08 Benchmarks. 





JJ bit 


Reg liter 




Integer 


long 


:qk at 7500 Xenix ivt 3 
»t«t uoo umi »c (iota 


».1 




J.I 




DEC VAX 11/710 VXIX B»r»l«y i.l 


).t 




DEC VAX I 1/710 


5.1 




OOOt OS-* 4SX ■ Wi 


11.0 




61000 01-1 (IX 10 MM 


»,4 




mtruta-ot noot at-t tut to tat 


».» 




mitiuie-oio 4»oio at-t «** it w>« 


7 » 


» »» 


mWTAJW- 020 ft020 MCHttl OalTLMX 1 1 SHe 


1 < 


l J; 


K>ln(l 






register long 1; 






for (l-«r I < 9»»M»i t*H: 






lltlllUt Hit* • MS*TAVO-02S 4 i Kttt). 






nit to I - 10 taps (Morel* SpM* 







OMMieralV. 
•bde*eCCa^iW 



cc 

OCOOPe 
HsttllTT 

Oaefwofl PoxJ 

Srjto-5j.il 
Sr)fc»Mns« 

$>?<■* Cinpti SHI Mcrai 
PAT w/C nra 

PAT/HJST Canto 
S^jeor. <„ Wo.) 
COM 



t'uiii'jciMnjOm) 



■ addtioaoog 



lisaai 

MOJO 
3OXD0 

loom 

75O00 
MOXtt 




inn 

PS.00 
•95.00 

a9oo 

79.9) 

*»J0 

MH 
1DM 



MUM 

ixxao 
xdoo 
mm 

SSaCO 



THE 

P 

R 
O 



115 MJil (optional t«.« Mhi jv xllable) MOS8O20 full JZ-bll wide path 

32-blt wide data and address buses, non-multlplcxcd 

on chip instruction cache 

object code compatible with all UXXX family protestors 

enhanced lojcructlonsct-mathco-processDrlnlcrfaoe 

UMI math tii-*peed floating point co-procruar (optional) 

direct extension of full 68020 Inetntctioo set 

full »uppO]-t IEEE P7S4, draft 10.0 

transcendental and ot her adentiric math function! 

2 Megabyte of SIP RAM (512 x S2 bit organl lalion) 

up to 25.K byte* of EPROM (64 x 32 bits) 

4 Asynchronous serial I/O porta standard 

optional to 20 atrial porta 

standaid RS 232 Inleiface 

optional actwoik inleiface 

buffered 8 blit parallel port (1/2 MCS8230) 

Centronics type plnoul 

expans ton con nectar for I/O devices 

lab II da La path 

256 byte address space 

2 Interrupt Inputs 

dock and control signals 

Motoiola I/O Cliannel Modules 

time of day clock/calendar w/bjtlcfy backup 

controller for 2, 5 1/4" floppy disk drives 

single or double side, single or double density 




Don't be mislead! 



X to » track sci actable (48-96 TP I) 

SASI inleiface 

programmable periodic interrupt gencralor 

interrupt rate from mkro-sero nds to seconds 

highly accurate lime base (5 ll'M) 

5 bit sense switch, readable by the CPU 

Haidware single-step capability 



ONLY Data-Corn p 

delivers the Super 

MVSTANC020 



T}neeAt-4p.«d 6*020 *ytxonu ere proton dyenvkiAfi, at 
NASA. Atomic Ejwffy Coirmaxe*. Government 
Ajcacucr or weff or iVwversaer. fletnnso. Lata, and 
ot)urCnn&dAppUaiU>»iCe*uTT.wcAlmi&c whore spars), math 
onxierunf, and anitf-iiMr. maas'uitMt UNIX C Utl Vostuajiasitay 
end low coat is a nana* 



I MUSTANCWUoT* ettvtd 12J I 
«4lulU Mas ttona 
AAJli. lea Muttas] 
Ml H> 20 Mai BWaMUH 



[OF 



HVH2 
. 3 A4^*» CWA Wo< 



RS2J2 * 

Eeca end bppot 4edetke>d *». puro 

(loo) of VJ Hhal pcro eq^aomefi 

00 Irn Parallel I/O can! 

Cere 3 61230 bscrucarTircii dia>. 

fnmf. irf X lil.t t^h rfinl taifkr 
awdjaxi cirtnA In r*> ei'jip 

PiixUfpe Herd 

trBM Tor twb dip «ut PO A ar*ii» & • 

>upi.<ll2K0«AM. 



7J0.D0 




ion on 
lonm 


Only the'TRO" version 


3000 

sfBygi 


of 


t»M 


OS-9 supported! 


J7JM 
J7SM 
73000 


Su> 


1JS.00 


This \s HEAVY DUTY 


165 00 


Country! 



MUSTANG Kl SBC 


S24WM 


Cabinet wj/i»1lchlne, PS 


S299.9S 


5"-M track, floppy 


DSVDO M49.9S 


floppy cable 


139.95 


OS-9 eSK Prolan ion»l Ver. 


JS50.00 


* Indudei C Compiler ($500.00) 




Winchester cable 


$39.95 


Winchester Orivt 25 Mbyte 


W9S.O0 


lisrd DUc controller 


$395.00 


Shipping USA UPS 


$20.00 



Toui: Save $1000.00 $5^<9.U 

complete sytem $4,299.80 



AROffrr euUfed teten-pi^Qf LAN. Bbar texk* lamnvj . caU. 
LAN ien»m ditvart )20u0O 



ErsempxbMDOd. I/O Qunoal kbouW 



■ i'- Murrnwo-qarj" 

IMi MI AVE DOOflO 



SoRveri IXnvunli 



UPGRADES 

Write or Call 

for Professional 

OS-9 "Full Bore" 

Upgrade Kit 



Fackrrrieo'grranwNloffHafaot) ' 

I »aos*ionjioufOK)89XW(SSC Must I 

. b» •orkinj oropeily endccmilsttMh J 

1 si aofriwa, csfieja and ooo^rnafsaaon. ] 

Cat lor more irrormausfl 



UmFLEX Lot* 

MC6888 1 f/p malh procaasor Add 

18.67 Wu- MC68020 

IS 6/ Mm MC6888 1 

20 K*U MC68020 Sy» 

Note all 6888 1 chips worn with 20 Mru Sy» 



NOTE: Only Professional OS-9 

now available (68020 Version) 

Includes ($500.00) C Compiler 

68020 & 68881 supported 



♦ 100.00 
$275.00 
♦375.00 
$37500 
$7S0rxl 



AI MUSTANO^OD™ lyno and teenl hr/en eeaxisedte 
d l». te i co dl )e*d refrwow 10-70% cafwdee j on tasco. Cat or 
erej lie aedea. Dtfconesy esfty eamr te Hit u well. 



Data-Comp Division 

-i;^> Mf^7 , » v A Pejco.de of Quality Service' 

Compotsyr Publishing, Inc. SOOO Cossandra Sniih Road 
Tatophon. 815 842-4601 - Taiax 510 60T>8«M Hasan. Tn 37343 



*9 



complete 

25 Mbyte HD System 

$4299.80 

85 Mbyte HD System 

$5748.80 



'68' Micro Journal 



04obOTS7 



/ PAT - JUST ' 

PAT fim ©^ 

With 'C Source | (|fj 
$229.00 [ %©8®inn)i 



N 


f r.- - -.1 % 

*jr" - Med/* 

\_y T» 5900 Cm uo*. Smith Ri 

r w Iliuoo.Tn 37343 

* T Tckt**™ 6I5 842-4S09 

1 Y«l«510 60O-6«O 


y 


j^ m^^^imhh ;J 



PAT FROM S. E. MEDIA - A FULL FEATURED SCREEN ORIENTED TEXT EDITOR 

with all the best of PIE. For those who swore by and loved PIE, this is for YOU! All PIE 
features & much more! Too many features to list. And if you don't like ours, change or add 
your own. C source included. Easily configured to your CRT terminal, with special configuration 
section. No sweat! 

68008 - 68000 - 68010 - 68020 OS-9 68K $229.00 



COMBO 



PAT! JUST 

Special $249.00 

JUST 

JUST from S. E. MEDIA - - Text formatter written by Ron Anderson; tor dot matrix 
printers, provides many unique features. Output formatted to the display. User con- 
figurable for adapting to other printers. Comes set-up for Epson MX80 with Graflex. Up 
to 1 imbedded printer control commands. Compensates for double width printing. 
Includes normal line width, page numbering, margin, indent, paragraph, space, vertical 
skip lines, page length, centering, fill, justification, etc. Use with PAT or any other text 
editor. The ONLY stand alone text processor for the 68XXX OS-9 68K, that we have 
seen. And at a very LOW PRICE! Order from: S.E. MEDIA - see catalog this issue. 

68008 - 68000 - 68010 - 68020 OS-9 68K 
V With 'C source $79.95 J 

Oclober"87 '68' Micro Journal 



f 




Btcaily OS-B 



Dedicated to the serious OS-9 user. 
The fastest growing users group world-wide! 

6B09 - 6B030 



A Tutorial Series 



By: Ron Voigts 

2024 Baldwin Court 
Glendale Heights, IL 



J 



rTDONTWORKJ 

Many times I get phone calls from friends who are 
using OS-9. They have been trying to get some 
program to iun. They have been at the keyboard for 
a long time with only error messages and a lot of 
frustration to show for their effort. I ask. "What Is 
wrong?" And the reply Is pretty much the same. "IT 
DON* r WORK!" 

If you are an OS-9 user, then this must have 
happened to you. If you say otherwise. 1 would 
believe you are "pulling my leg." Why? Because It 
happens to me. Now I have been around awhile, long 
enough to know the bastes. But from time to time, 
things Just don't work. This happened the other day. 

I tried to run a familiar program and got only an 
error message. It was error #216 File Not Found. It 
entered DIR X and saw that It was in the file 
directoiy. I tiled the full path name. Error #215 -- 
Bad Path Name. Well maybe I can load It Into 
memoiy. So I try the LOAD command. Yep. you 
guessed 11. It was another error. #214 -- No 
Peimlsslon. Talk about aggravation! I tried using 
IDENT and got error #243 -- CRC Error. 

It was time to play OS-9 detective. I tiled DIR E X to 
gain a little more information about the files In the 
command directory. It showed me that IDENT's 
owner was $8C0D. was a directory and contained 
some Impossible number of bytes. In short, it was 
hurt. Its file descriptor sector appeatred to be 
glltched. The original program that I tried running 
had incoirect attributes. I used ATTR on it and 
salvaged It. Unfortunately. IDENT was a total loss 
and had to be scrapped. ( A little more detective 
showed that the AC line was the source of the 
problems. Evidently I was picking up transients. 
Currently I am tiylng one of those "spike 
suppressors". It seems to be doing the trick. ) 

So what have we learned from all of this? 
Specifically, there are a number of things that must 
be correct for an executable module to run. The 
module's header check byte. CRC value and 
attributes must all be correct. If anyone of these Is 
not right, it doesn't get loaded. If it Is not loaded, it 
cant be iun. 



The module header Is the first thing to consider. 
There are 8 bytes. They are composed of the sync 
bytes, module size, name offset, type, language, 
attributes and revision. These 8 bytes are 
exclusively ORed to cieate the header check. 

Next Is the module's CRC. It is located in the last 
three bytes of the module. This is a check of the 
entire contents of the module. If so much as a single 
byte is wrong, this will detect it. It won't tell where it 
Is wrong, but at least it will tell something is wrong. 

1 won't go Into the algorithm of how the CRC is 
calculated. If you wish to Investigate it further, take a 
look at the system request FSCRC. It can be used to 
verify an existing module or the CRC can be 
calculated for a new one. 

One other Item to mention about the CRC. It Is only 
checked when the module is loaded into memoiy. 
Once the module Is listed tn the system module 
directoiy. it is safe to modify. This can be 
accomplished with SOLVE from Southeast Media or 
DEBUC from Mlcroware. I'll show later how to do 
this. 

Finally, there is the attributes or the file. If the 
module's file does not have execute peimlsslon. It 
will not run. This Is what caused the errors 214. 215 
and 216. tn my case. It Is necessary that at least the 
owner execute be "turned on". 

So now we know what goes wrong. How do we attack 
the problem? If it does not want to run. then there 
must be a reason. And it is most likely one of the 
above. ( I did not talk about one obvious reason. 
That is the correct excutlon directoiy. Always make 
certain that you are in the execution directoiy and 
that the file Is In it. Whenever I change disks. 1 
always do a CHX /DO/CMDS. ) 

Checking the files attributes is a good Idea. The 
ATTR command is available. Entering it wtth the 
modules pathname will generate the necessary 
Information. If you get something like: 



'68' Micro Journal 



October's: 



you most likely have found a problem. So. we will 
want to correct this. If the executable module's name 
MVMODULE. we would enter: 

OS9: attr mymodule -pe -e 

This would give the module both public and owner 
execute permission. I usually keep my programs as 
both, unless I see a reason to exclude others from 
using them. 

The next step, if the attributes are OK. Is to check the 
header check and CRC. This can be done with 
VERIFY. VERIFY Inputs through the standard Input 
path and prints It Information to the standard error 
path. To use It. we enter: 

OS9-. verify <nrymor)ule 

Module's header parity Is correct. 
Calculated CRC matches modules. 

If come up wrong, the module is probably hurt. But if 
you believe It Is not. then you can use VERIFY to 
correct It. Lets say MYMODULE is to be corrected. 

The U ( update ) option of VERIFY can be used. It will 
then copy the module to the standard output path 
replacing the header check and CRC with the correct 
values. Entering the following: 

OS9: verify u <mymodule >newmodule 

will create a new version that will hopefully run. 

These techniques may come In handy sometime. 
There are no guarantees that a module will run after 
you have applied them. Generally speaking, if the 
CRC and header check do not match, the program Is 
huit. Using VERIFY to correct them won't help. Ills 
best to erase the sick program and replace It wtth a 
good one. 

FURTHER ANTICS WITH VERIFY 

Besides correcting stck modules, there are other 
reasons why you might want to use VERIFY. If you 
have to patch a program, It would become necessary 
to correct the module's CRC. Many times programs 
come that are not quite the way you expected them. 
You don't have the source code. You know what you 
want it to do. The only way to get It there Is to patch 
It 

One such example Is the C Compiler licensed to 
Tandy from Mlcrowaiv. It Is hard coded Into CCI 
and C.PREP that the DEFS directory and other items 
should be found on /D I . Now what tf you have only 
one drive, but It Is double sided and called /DO. You 
have the necessary space for everything, but the C 
Compiler has Its heart on going to drive /Dl? YouVe 
got to patch It. I'll show you how I did CC 1 and let 
C.PREP up to you. 

First. I loaded CC I Into memory wtth the command 
LOAD. Next I used SOLVE. This is the Symbolic 
Object/ Logic Verify and Examiner debugger form 
South East Media. I used its monitor commands. I 
does much more, but I'll tell about it another time. 
Once Into SOLVE. I entered: 



DBG: L CCI 
B000 87. 

This linked to CCI. SOLVE told me that CCI started 
at location $BO00. Next I would find where the /Dl Is 
located. I entered: 



DBG: ? $B000 $D000 
BEE4 



/Dl 



This asks, where the string of /Dl Is located? And 
SOLVE said It started at $BEE4. Next I changed It to 
"...". This would give me a little llexibUlty. The dots 
would back me out a few dlrectoiy levels from where 
I was at. So If the source code was at /DO/SOURCES. 
It would use /DO. If I was on the RAM Disk and In 
/R/SOURCES. It would use /R. So. I entered- 

DBG: C $BEE4 
BEE4 61 /"... 

I Indicated that I wanted to change the byte at 
$BEE4. It brought me there and I enterred the 3 dots 
as a string, using the " Indicator. Now all was done. I 
left SOLVE. 

VERIFY could now be used. 

save /dO/cmds/temp ecl 
del -xcel 

verify u <temp >ccl 
del -x temp 

This series of commands saveed the new CCI as a 
file called TEMP. It dele teed the old CCI. Then 
VERIFY was used to correct It. Finally, the file TEMP 
was eliminated leaving the new version of CCI. 

What could be easier? You can use your favorite 
debugger. I like SOLVE. Once you have changed the 
portion of the program of Interest, use VERIFY to 
correct the CRC and header check. And you you're 
all set. 

DATE REVISITED 

Some time back. I presented a replacement for the 
command DATE. It appeared In the Februaiy '86 
Issue. It was written In 6809 assembly code. I 
created It with hopes of Improving the original. This 
version printed time In standard, rather than 
military notation. It used PM and AM. It also would 
print the day of the week. For the most part It has 
worked well. But I have recently have been thinking 
of changing It Improving It. 

I added a few more criterion to my design 
considerations. First. I decided to rewrite It in C 
code. This would make it more universal. Although 
the final program Is a bit longer. I don't think 
memory Is an objection. Second. I added the choice 
of either standard or military time notation. Finally, 
It will print the information in a "greeting" type 
fashion. There are four options that can be used 
with this new DATE command. They are: 

-t . print the time 
-m » use military notation 
-d m include day of the week 
-g - use greeting style 



October 87 



'68' Micro Journal 



So, IT 1 entered: 

OS9: date -t -m -d -g 

I might see something like: 

Good Evenlngl Today Is July 9. 1987 
It Is Thursday The time Is 18:29:00 

This makes a nice addition to your startup fUe. And 
It looks a lot more friendly. 

Rather than wilte the program In one large source 
code. I broke It up Into smaller functions. I like to 
take a modular approach to programming. I don't 
have to consider a large program chunk, but rather 
concentrate on smaller discrete units. I took a 
course one time on programming style. A question 
was put forth. "How long should a progjam unit be?" 
The answer Is 60 lines. This Is how much space It 
would take If listed to a printer. It can easily be 
examined without any page Hipping. Actually, longer 
than this is not necessarily bad. But the longer the 
program unit gets, more errors can crop up. 

Listing 1 Is the progiam DATE. I think It should be 
fairly understandable. 1 created my own algorithm 
for finding the day of the week. One Item of Interest 
is the structure time, "nine' Is a pointer to a byte 
structure. I declared It with 

struct sgtbuf time; 

This makes Is easy to pass as a parameter. 
Referencing members of the structure Is a little more 
complicated. For example, the year Is referred to as: 

(•time). t_ year 

Since the dot binds tighter, the parentheses are 
used. This statement says the char value at t_year 
pointed to by 'time'. Another method to Indicate this 
Is: 



LISTING 1 



time->t_year 

Either statement will work, 
and stay with one. 



1 chose to be consistent 



I have Included another listing this month. LISTING 
2. This Is a C function I presented last month. It Is 
GETOPTfJ. I use It to return the options passed on 
the command line. Actually the program only use a 
small feature of It. But this does show how to make 
use of GETOFTTJ. I plan on using this option parser 
from time to time. You might want to keep a copy of 
it somewhere, since 1 may not always rerun it. 

That wiaps up another month of BASICALLY OS-9. 
Take care until next timet 



l 

2 
3 
4 
5 
6 
7 
8 
9 
10 
11 
12 
13 
14 
15 
16 
17 
18 
19 
20 
21 
22 
23 
24 
25 
26 
27 
26 
29 
30 
31 
32 
33 
34 
35 
36 
37 
38 
39 
40 
41 
42 
43 
44 
45 
46 
47 
48 
49 
50 
51 
52 
53 
54 
55 

la 

56 
57 
58 
59 

TRUE; 
60 

TRUE; 
61 

TRUE; 
62 

TRUE; 
63 
64 
65 
66 
67 



)) 



Name: Date.c 

Date: 22-Jun-87 

Author: Ron Voigts 

Corcpller: Microware C Compiler 



Version 1 .00 

Prints the date and tiro to 

the standard output path. 



Function: 

Prints the date . 

-t - with the time 

-in = time in military notation 

-d - with the day of the week 

-g - with a greeting 



Idefine LEVEL2 

•include <stdio.h> 
•include <tlme.h> 
•include "getopt.c" 

Idefine TRUE 1 
Idefine FALSE 

/* Parameter flags */ 

Int mflag - FALSE; /« Military t;JHe */ 

int tflag - FALSE; /* Print time */ 

lnt dflag - FALSE; /* Print the day V 

int gflag - FALSE; /* Greeting flag */ 

int pmflag - TRUE; /* PH flag */ 



struct sgtbuf *time; 

maln( argc, argv ) 
int argc; 
char *argvl]; 

( 

/• Variables used */ 
char 'optlon,- 
char *optlist-"KDTG"; 

/" Process the input line */ 
optn»l; 

while I (opt ion -get opt < argc, argv, optlisl 
NULL ) 

if ( opterr !- ) 

dhelpO; 
else ( 

if ( toupper ('option) — 'M' ) mflag - 

if ( toupper ('option) -- 'D' ) dflag - 

if ( toupper ("option) ~ '?' ) tflag - 

if ( toupper ('option) « "G ' ) gflag «• 



/• Now get the time •/ 
getinie( time ) ; 



'68' Micro Journal 



October "87 



68 


/• 


Print the greeting */ 


69 




If ( gflag ) ( 


70 




If ( ("time) .t_hour< 12 ) 


71 




prlntf ('Good Morning! ">; 


72 




■lte if ( f time) ,t_hour<18 ) 


73 




prlntf ('Good Afternoon! ■>,• 


74 




else 


75 




prlntf ("Good Evening! "); 


76 




1 


77 






78 


/* 


Print the date •/ 


79 




If ( gflag ) 


80 




prlntf ("Today Is ") ; 


81 




pdatel time ); 


82 


/• 


Print the day of the week */ 


83 




If ( dflag ) ( 


84 




If ( gflag ) 


es 




prlntf ("It Is "); 


86 




pday( tine ); 


87 




> 


88 






89 


/* 


Print the time •/ 


90 




If ( tflag ) < 


91 




If ( gflag ) 


92 




prlntf ("The time Is "); 


93 




If ( nflag > 


94 




pmtlme ( time ) ; 


95 




else 


96 




ptlme ( time ) ; 


97 




> 


98 






99 


I 




100 






101 


/' 


Help for date •/ 


102 


dhelpO 


103 


( 




104 




prlntf ("Usage: \n"); 


105 




prlntf (" date [-t] [-«) [-dj [-g] W); 


106 




prlntf (" -t • with the time\n") ; 


107 




prlntf!" -m - time In military 


notatlon\n") ; 


108 




prlntf (" -d - with the day of the 


weekVri 


") 




109 




prlntf (" -g • with a greetingVnVn") ; 


110 




exltt ); 


111 


1 




112 






113 






114 


/• 


Print the day of the week •/ 


US 


pd«y( t ) 


116 


struct sgtbuf *t; 


117 


( 




118 






119 


/* 


Variables used •/ 


120 




lnt n; 


121 




reglster lnt i; 


122 




lnt fudge -3; /* My fudge factor •/ 


123 






124 




static char *day(] - ( 


125 




"Sunday", 


126 




"Monday", 


127 




"Tuesday", 


128 




"Wednesday", 


129 




"Thursday", 


130 




"Friday", 


131 




"Saturday" 


132 




>; 


133 






134 




static lnt day count |) • ( 


135 




31, 28, 31, 30, 


136 




31, 30, 31, 31, 


137 




30, 31. 30, 31 


138 




t; 



139 

140 /* Calculate today's day of the week •/ 

141 n - f t) .t_year + fudge + ( ft) .t_year+3) /4; 
for ( 1-0; Kft) -tjnonth ; i++ ) 

n+^Jay_count ll) ; 
n««f t) .t_day; 



142 
143 
144 
145 
146 /• Adjust If this Is leap year •/ 



If ( l(*t) -t_year » 4 )> 
n++; 



Print day of the week 
printf("*s ", day[ n 



I 7 



147 

148 

149 

150 

151 

152 

153 ) 

154 

155 /* Print the date •/ 

156 pdatet t ) 

157 struct sgtbiif *t; 

158 ( 
159 

160 /• The 12 months •/ 

static char 'month [] • { 
"Unknown", 
"Jaunary", 
■February", 

"March", 

"April", 

"May", 

"June", 

■July", 

"August", 

"Septeofcer", 

•October", 

"Noventoer". 

"Dec«nber" 



>0 it ft) .t month>2 I 



1); 



161 
162 
163 
164 
165 
166 
167 
168 
169 
170 
171 
172 
173 
174 
175 
176 
177 



); 



prlntf ("Is %2d, 19%02d\n-, month|(*t> 
(*t).t_d*y, (*t).tjear>; 



t_monthJ, 
178 
179 
180 } 
181 

182 /• Print the time 

183 ptlme ( t ) 

184 struct sgtbiif *t; 

185 ( 
186 
187 
188 
189 
190 
191 
192 
193 
194 
195 
196 
197 ) 
198 

199 /* Print In military time •/ 

200 pmtlme ( t ) 

201 struct sgtbuf *t; 

202 ( 

203 prlntf ("I02d:»02d:»02d\n", 

204 ft) .t_mlnute, ft) 

205 > 
206 



If ( ft) -t_hour<12 ) 

pmflag-FALSE; 
If ( ft) .t_hour>12 ) 

ft) .thour— 12; 
prlntf f %2d:»02d:%02d 
ft) .t minute. 
If ( pmflag )" 

prlntf ("PM\n"); 
else 

prlntf f AM\n"); 



", ft) ,t_hour. 
ft) -t second ); 



ft) .t_hour, 
t second I; 



10 



Octobef'87 



'88' Micro Journal 



LISTING 2 



1 
2 
3 
4 
5 
i 
7 
8 
9 
10 
11 
12 
13 
14 
15 
16 
17 
18 
19 
20 
21 
22 
23 
24 
25 
26 
27 
28 
29 
30 
31 
32 
33 
34 
35 
36 
37 
38 
39 
40 
41 
42 
43 
44 
45 
46 
47 
48 
49 
50 
51 
52 
'<t+l 
53 
54 
55 
56 
57 
58 
7 
59 
60 
61 
62 



Name: GETOPT 
By: Ron Voigts 
Date: 25-MAV-87 



Pi met Ion: 

This function examines the argument list 
returning a pointer to the option and 
Its argument. A null string Is pointed 
to If the option has now argument . 



Version 1.00 
Original. 



•define TRUE 1 
•define FALSE 

char *optarg; /* Option argument */ 

lnt optn; /* Next option V 

lnt opterr; /* Error status */ 

char *getopt( c, v, optllst ) 

lnt c; /* argument count */ 
char **v; /* argument vector */ 

char *optllst; /« option list */ 



lnt lsoptlon; /* option flag */ 

lnt hasarg; /* option argument flag */ 

register lnt 1; /* useful Index */ 

char *opt; /* option pointer */ 

char *t; /* argument pointer */ 

static char *null-'\0 1 ; /* null string */ 

/* Set up the null string for 'optarg' */ 
optarg - null; 

/* Set up the error return status */ 
opterr - 0; /* No errors */ 

/' Set up the argument */ 
tcivioptn] ,- 

/* We are at the end of the argument list */ 
If ( (optn— c) II (*t<-'-') II ( *t==--' ts 
).. <\0' ) ) 

return ( ) ; 

I* Ho can set the option */ 
opt - t+1; 

/* Check If we have an option with an argument 

lsoptlon - FALSE; 

hasarg - FALSE; 

for ( i»0; Kstrlen (optllst); £*+ ) 

If ( toupper(«(t+l)> — toupper (optllst U]) ) 



63 

64 

65 

66 

67 

68 /♦ 
error */ 

69 

70 

71 

72 /* 

73 

74 

75 

76 

77 

78 
V 

79 

80 

81 

82 

83 

84 

85 

86 

87 /♦ 

88 

89 

90 

91 J 
92 

EOT 



lsoptlon = TRUE; 
If ( optlistti+ll — '«') 
hasarg - TRUE; 



If this Is not an option then return with 

If ( ! lsoptlon ) 

opterr--l; /* Illegal option */ 

Now we check and set up the argument */ 
if ( hasarg ) { 

if (Mt+2) — 'NO') 
if ( optn < c-1 ) 

optarg - v[«^optn); 
else 

opterr— 2; /* Missing option argument 

else 

optarg - t+2; 
if ( *optarg»- '«' ) 

optarg++; 
} else 

if ( *(t+2) != '\0' ) 

opterr--3; /* Argument not expected */ 

Now we have an argument and option */ 
optn++; /* Adjust the next pointer */ 
return! opt ); /* Return the option pointer 



FOR THOSE WHO 




68 MICRO 
JOURNAL 1 " 



'68' Micro Journal 



October's? 



11 



^^^^m The C Programmers 
m I iOA- Reference Source. 
»P/^ Always Right On Target! 

^^ ( C User Notes ) 


A Tutorial Series 


By Dr. E. M. "Bud" Pass 
1454 Latta Law; N.W. 
Conyos. GA 30207 
404 483-1717/4570 

Qxrfuer Systems Consultants 



INTRODUCTION 

This chapter concludes the discussion of the conversion of Technical Systems Consultants 
BASIC and Mlcroware BASIC09 programs Into C pro-ams begun In an earlier chapter. 

CONVERTING BASIC PROGRAMS TO C 

Following is a summary of the changes required to convert BASIC function calls to C. Many 
differences are discussed elsewhere In this series. A bilef comment appeals with each function. 



BASIC 


FUNCTION 


C EQOIVALENT 
VALUE RETURNED 


ABS 


(n) 


iaba (n) , laba(n), f aba (n 
absolute value of n 


ADDR 


(n) 


tn 

addroaa of n 


ASC 


(sS) 


*(a) 
numeric value of first character of aS 


ASN 


(n) 


faan(n) , daan (n) 
arcaine of n 


ATK 


(n) 


fatn(n), datn(n) 
arctangent of n 


CHR5 


(n) 


((char) (n & Oxff)) 
ASCII character corresponding to n 


COS 


(n) 


fcoa (n) , dcoa(n) 
cosine of n 


CVTS% 


(aS) 


cvtai (a) 
integer equivalent of 2-byte aS 


CVTSF 


(aS) 


cvtaf (a) 
floating equivalent of S/8-byte a$ 


CVT%S 


(n) 


cvtia(n) 
2-byte equivalent of integer n 


CVTFS 


(n) 


cvtfa(n) 
5/8-byte equivalent of floating n 


DATES 




dates () 
current date (may be different format) 


PEEK 


(n) 


<(*((char *) (n)) « 8) | 
(•((char *) (n + 1))> 
16-bit numeric value at addreaa n 


EOF 


(in) 


none 
teat if path n at end of file 


ERL 




none 
error line number 



12 



October*? 



'68' Micro Journal 



i 



I 



ERR 




EXP 


(n) 


FALSE 




FIX 


(n) 


FLOAT 


(n) 


FRE 


<n) 


BEX 


OS) 


IHCHS 


(n) 


INSTR 


(n,sl 


IHT 


(n) 


LAND 


(ra,n) 


LEFTS 


IsS.n) 


LEN 


(sS) 


LNC7T 


(n) 


LOG 


(n) 


LOG10 


(n) 


LOR 


(n.n) 


LXOR 


<m,n> 


HIDS 


(sS.nl 



MOO 

PEEK 

PI 



<oi, n) 
(n) 



err no 
error number (will be different) 

fexp(n) , dexp(n) 
e co povBr n 


'alse boolean constant 

fint(n*0.5), dlnt(n*0.5) 
rounded Integer value of n 

((float) (n)), ((double) (n)) 
n converted to floating point 

none 
number of bytes of unallocated memory 

hex(s) 
numeric equivalent of hex string s$ 

inchs(n) 
input one character frcn file n 
, s2S) strchrstsl + (n),*s2) 

first occurrence of s2S in slS starting 
with character n or zero if not found 

flnt(n), dlnt(n) 
truncated integer value of n 

(In) ( (n)) 

bitwise ra ana n 

mids (s, 1, n) 
string representing n characters 
at beginning of sS 

strlen(s) 
length in bytes of sS 

(-(nil 
bitwise not n 

flog(n), dlog(n) 
natural logarithm of n 

floglO(n), dloglO(n) 
base 10 logarithm of n 

<<>) I (nl) 
bitwise m or n 

<<m) * (n)l 
bitwise m exor n 
n2) mids<s,nl,n2) 

string representing n2 
characters starting at nl 
characters into sS 

Km) * In)) 
remainder of m divided by n 

•((char «) (n)) 
8-bit numeric value at address n 

3. H 159265 
pi (3.14159265) 



[ (n) ] none 

character position in file n buffer 
(vS[ (nl,nl,n] I) )) «vs, «vs[n], tvslnjln), «vs[n][n][n) 

address of argument (see text) 
(v[ (n(,n[,n)])l) iv, tv[n), *v[n)[n], *v[nj [nj [n] 

address of argument (see text) 
(s$,n) rights (s,n) 

string representing n characters at- 
end of sS 

rnd(n) 
random number between and 1 

isgn (n) , lsgn (n) , fsgn(n), dsgn (n) 
sign of n 

fsin(n), dcos(n) 
sine of n 

sizeof (n) 
size of n 

lefts (spaces, n) 
generate string of n spaces 

((n) « (n)) 
n squared 

fsqr(n), dsqr(n) 
square root of n 

fsqr(n), dsqr(n) 
square root of n 

strs(n) 

string conversion of numeric n 
(slS,s2S) strchrs(s2 ♦ n,*sl) 

first occurrence of slS in s2S 
or zero if not found 

none 
advance print buffer pointer to 
position n 

ftan(n), dtan(n) 
tangent of n 

trims (s) 
string conversion of numeric n 

1 
true boolean constant 

none 
user function with parameter n 



VAL (sS) val(s) 

numeric conversion of string sS 



POS 
PTR 
PTR 

RIGHTS 

RND 

5GN 

SIN 

SIZE 

SPC 

SO 

SQR 

SORT 

STRS 

SUBSTR 

TAB 



(n) 
(n) 
(n) 
(n) 
(n) 
(n) 
(n) 
(n) 
(n) 



(n) 



TAN 


(n) 


TRIMS 


(sS) 


USR 


<n) 



I 



c 
3 



Statement* 

Statementa provide the means or specUylng the operations to be performed 
and the order In which they arc to be performed In the BASIC language. The 
statementa supported by the TSC BASICS and by BASICOQ are similar, 
although not Identical. Many statementa have already been discussed in 
previous sections of this discussion. Several of the more Important onea arc 
discussed below. 

Compound statements are separated by ':' and 'V In the BASIC Interpreters 
and by ':' in the C compiler. Complex statement groups are formed In BASIC by 
placing them on the same line, separated by ':' or 'V. They are formed In C by 
surrounding them with T and T. 

The IF statement has somewhat different formats among the TSC BASIC 
and BASIC09 Interpreters and in the C compiler. The primary effect this has 
on the conversion Is that an open brace must be placed before and a close 
brace after each group of compound statementa between the THEN and the 
ELSE or end of the logical line and between the ELSE and the end of the logtca 
line. 

A subtle dliference between the TSC BASIC FOR statement and the 
BASICOQ FOR and C for statementa concerns (he fact that the TSC BASIC FOR 
structure always executes the body of the structure once, whereas the BASICOt 
and C structures check the terminating condition first, before executing the 
body of the structure Initially. Also, because of the different methods used by 
ISC BASIC and BASICOQ. multiple NEXT v statements for the same FOR 
statement, although legal In TSC BASIC, may generate different results In 
BASICOQ from those generated in TSC BASIC, and. of course, there Is only one 
exit point from a C for statement. 

The BASICOQ PROCEDURE declaration statement may be conversion Into i 
C function header. Any PARAM declarations may be converted into C function 
arguments, with the considerations discussed In an earlier chapter. Any DIM 
and other declarations may be converted Into local or global variables, as 
appropriate. 

The GOTO statement of BASIC and the goto statement of C perform 
essentially the same function. If labels are preceded by *L_. or some other 
unique prefix, numeric BASIC labels will be made Into legal C labels and alpha 
labels happening to coincide with C reserved words will also be made Into legal 
C labels. Duplicate label Identifiers In separate BASICOQ PROCEDURES could 
be made unique by prefixing each group with unique sk-tnga. 

One consideration which has the capacity of materially complicating the 
conversion of BASIC programs Into C programs Is the run-time structure 
imposed by the GOSUB statement. If a BASIC program Is written In a modular 
fashion such that there are no or very few branches Into and out of GOSUB 
subroutines, the conversion is far simpler than in the case of the traditional 
"bowl of spaghetti" BASIC programs in which a laige number of GOTO and 
GOSUB statements are freely Intermingled. The primary conflict arises from 
the consideration that the BASIC GOSUB statement should Ideally be 
converted Into a C function call and the target label should be converted Into a 
C function header. Branches Into and out of a C function are always Illegal, 
even though many C compilers may not catch the error. In extreme cases. It 
may be necessary to rewrite and rctest the BASIC code before conversion. 

The TSC BASIC DIGITS statement has no direct equivalent in C. If the 
formatting changes caused by the DIGITS statement are Important, some ol 
them may be recovered thru the use of the appropriate formatting options of 
the C fprintf statement. This includes the precision and width options of the C 
prlntf statement. 



The TSC BASIC FIEIX) statement and the BASICOQ TYPE statement are 
often used to structure records to be read and written from and to disk files. 
Other than the potentially dynamic status of the FIELD statement, both 
statements may be converted to C structures. However, very few Individual 
FIEID statements or TYPE statements define entire records, so It Is necessary 
to somehow map out the record format or formats of Interest in order to 
determine the corresponding C structure. 

The GET and RJT statements of both versions of BASIC perform the actual 
input and output Into and from these BASIC structures. In TSC BASIC, the 
optional record number designations allow random record access: since the C 
(seek fiuictlon requires the offset to be provided in bytes, not records, the 
corresponding fseek argument must be multiplied by the siae of the structure. 

DATA statements In TSC BASIC are considered as constants, and no 
evaluation Is performed. DATA statements In BASICOQ arc considered as 
expressions, which are evaluated as they are encountered thru the 
corresponding READ statementa. The RESTORE statement resets the point of 
evaluation of the DATA statements. All TSC BASIC sequences Intended to be 
processed as character strings must be enclosed In double quote characters. 
Depending upon the logic of the program, the DATA statement may be 
converted as a C initializer or as a series of assignments. 

The C language has no single statement directly corresponding to the ISC 
BASIC statement SWAP, which exchanges its two arguments. However, the 
SWAP statement may always be expanded Into three BASIC statements. In the 
following manner: 



MAP vlS,v2S 


tenip$-vl$\ 




vlS=v2S\ 




v2S«tenp$ 


SWAP vl,v2 


temp»vl\ 




vl=v2\ 




v2=ternp 



thus eliminating the SWAP statement entirety. 

Following is a summary of the changes required to convert TSC BASIC anc 
BASICOQ statementa to C statements. A brief comment appears with each 
statement conversion. When necessary. T Indicates TSC BASIC and B 
Indicates BASICOQ. 



BASIC STATEMENT C EQUIVALENT 

OPERATION PERFORMED 

BASE N none 

set index base 
BYE exit (0) 

terminate execution 
T chain s$ |N) system (s) 

load and run BASIC program named sS 

starting with line N or first line 



B CHAIN s$ systea (s) 

execute comnd line s$ 
CHD s$ chdir (si 

change current data directory 
CSX s$ none 

change current execution directory 
T CLOSE nl.nl... -II fclose (n) 

B CLOSE fnl.lnl,...!] 

close specified files nl, n2, ... 
CREATE l,s$: IWRITElt+UPDATE] I+EXBC] n - fopen (s, ~v") 

open new file nl with name s$ 
DATA N[,N(,...|] initializers, assignments 

DATA S$[,S$[, ...]] 
DATA -SS-[,"SS"|, ...]] 

establish constant table within program 
DEF FNv(x)-n Idefine FNv(x) (n) 

define numeric function FNv with parameter x 
DBG none 

change trig functions to degrees 
DIGITS n|,n] none 

set number of digits to be printed 
B DIM v(n(, n) )[,...] :800L£AN charvln] ... 

declare dimensioned boolean values 
B DM v(n[,n)> I, ...MBYTE charvln] ... 

declare dimensioned characters 
T DIM |»n,)vS<n(,n]) I, ...] [-N] char vs In] ... 

declare dimensioned strings or declare 

virtual array associated with file nl 
B DIM vS(nl.nl) [ ]:STRING[N] charvsln] ... 

declare dimensioned strings 
T DIM I#n,|v%tn|,n])(,...J int v|nj ... 

declare dimensioned integers or declare 

viztual array associated with file nl 
B DIM v(n|,n|)|, ... I: INTEGER int v[n] ... 

declare dimensioned integers 
T DIM l#n.Tv(nl.n»H....J int v|nj ... 

declare dimensioned floating point variables 

or virtual array associated with file nl 
B DIM v(nl.nl) l,...]:R£AL int vfnj ... 

declare dimensioned floating point variables 
DPOKE nl,n2 ('((char *) (nil) - <n2 » 8); 

*( (char *) (nl + 11) - n2) 

store 16-bit value n2 at address nl 
END return 

terminate PROCEDURE or program 
END sS {printf |-%s\n", s) ; 

return; ] 

print string and terminate PROCEDURE 



ERROR 
EXEC 

EXITIF 

FIELD 

FOR 



T GET 

B GET 

GOSUB 

GOTO 

IF 

IF 

IF 

IF 
IF 

B IF 

INPUT 

INPUT 

INPUT 
INPOT 



(n) none 

generate error n 
, s$ system (si 

send coravsod line s$ to operating systea 
x TBEN SI ... ENDEXIT if (x) (si; ...; break; ) 

if expression true, execute statements and exit 
in,n AS v$((n[,n]| | [, ...| (establish structure) 

establish fields in random I/O buffer 
v-nl TO n2 (STEP n31 ... NEXT v (see text) 

create loop structure with control variable 

v set initially to nl, teiminal condition 

of v crossing n2, step size n3 (or 1) 

(C and BASIC09 check condition before first time, 

TSC BASIC always executes body once) 
fnll, RECORD n2] (see text) 

read random file nl record n2 or next 
•nl, structure (see text) 

read file nl record into structure 
(see text) 

call subroutine starting at label N 
goto L_N 

branch to label N 
X GOTO N if (x) goto L_N 

branch to label N if expression x true 



N 



N 



X THEN Nl 



if (x) goto L_N1 



branch to label Nl if expression x true 
x THEN Nl ELSE N2 if (x) goto L_N1; 

else goto L_N2 
branch to label Nl if expression x true; 
otherwise branch to label N2 
x THEN SI if <x) then (si) 

perform statement SI if expression x true 
x THEN SI ELSE S2 if ( x ) then (si); 

else (s2) 
perform statement SI if expression x true; 
otherwise perform statement S2 
x THEN SI (ELSE S2] ENDIF (same as IF) 

same as IF above 
LINE Iln,)vS fgets (vs, size, n) 

input string vS from file n or terminal 
lln,]L (fprintf (n, "%s ") ; 

f scanf (n, ". . . •', L) ; 
input list L from file n or terminal 
(tn,]|S$;)L (fprintf (n, "%s"l; 

fscanf (n, ". ..-, L); 
lln,||SS, ]L [fprintf (n, "%s "); 

fscanf (n, ". . ."', L) ; 
issue prompt SS to file n or terminal 
and input list L from file n or terminal 






2 

I 

c_ 
o 

c 

3 







OPEN 


OLD sS AS n n - fopen (s, "r") 


T KILL 


sS unlink Is) 




open file nl with name sS 




delete file named sS 


OPEN 


s$ AS n n _ fopen (s, "r+") 


B KILL 


s$ none 




open file nl with name sS 




unlink PROCEDURE 


PAR AM 


(like DIM) 


[LET1 


vS[(n[,nI) 3-sS same 




declare PROCEDURE arguments 




assign expression on right of equal 


PAUSE 


exit (0) 




to variable on left (see text for string 




pause and enter diagnostic mode 




and virtual array conversions) 


PAUSE 


sS (printf ("»s\n", s) ; 


[LET] 


v|(n[,n])]-n same 




exit (0); ] 




assign expression on right of equal 




print string, pause and enter diagnostic mode 




to variable on left 


POKE 


nl,n2 M(char •) (nl) - (n2> 




(see text for virtual array conversions) 




store 6-bit-ualue n2 at address nl 


LSET 


vSKnl.nl) ]-sS (same as LET) 


PRINT 


MnMHUSING 3S[,H(g[,]]Ig[;1)(,...) (see text) 




assign expression on right of equal 




output characters to file n or terminal 




to field variable on left of equal 


PROCEDURE 


(see text) 




in left- justified mode 




start PROCEDURE declaration 


LOOP 


SI ... ENDLOOP while (1) {si; ... } 


T PUT 


inll.RECORU n2] (see text) 




perform statements endlessly 




write random file nl record n2 or next 


NEXT 


v (end of for structure) 


8 PUT 


Inl, structure (see text) 




initiate next iteration for FOR loop 




write file nl record from structure 




with control variable v 


RAD 


none 


ON 


ERROR GOTO [N] signal (...) 




change trig functions to radians 




set trap at label N for error interception 


READ 


L (see text for DATA) 


ON 


ERROR GOTO [0] signal (...) 




read data into list L from DATA statements 




terminate error interception trap 


READ 


#n,L none 


ON 


n GOSUB N1I.N2I, ...] ] switch (n) 




read null-delimited list from file n 




< 


REM 


/• ... •/ 




case 1 : 


* 


/•...•/ 




goto L_N1; 




introduce remark 




case 2: 


RENAME 


slS,s2S none (o-s dependent) 




goto L_N2; 




rename file named slS as s2S 




I 


REPEAT 


SI ... UNTIL x do (si; ... } while (!(x)) 




> 




perform statements unitl expression true 




call subroutine at n-th label N 


RESTORE 


[N] (see text for DATA) 


ON 


n GOTO Nil, 821, ...11 switch (n) 

( 




reset DATA pointer to first statement 
or to statement at label N 




case 1: 


RESUME 


IN] (see text) 




L_N1(); 




return to program from error routine 




break; 




to original statement or to label N 




case 2 : 


RETURN 


return 




L_N2(); 




return from most recent active GOSUB 




break ; 
) 


RSET 


vSf (n(,n))J=sS (same as LET) 
assign expression on right of equal 
to field variable on left of equal 




branch to n-th label number N 




(in right-justified mode) 


OPEN 


#,sS: [READ] (+WRITE) [+UPDATE) [+eXEC] [+DIR] n- fopen (s, "r") R0N 


procedure ((pi (, ...] )] procedure ([pi |, ...) ]) 




open old file nl with name sS 




call procedure with arguments pi, ... 


OPEN 


NEW sS AS n n - fopen (s, "w") 


SEEK 


#n,m fseek (n, (long)m, 0) 




open new file nl with name sS 




position file n to byte re 



s 

z 



9 

? 
OS 



SHELL sS system (si 


if 


I! strain (a, "-n")J 


case "t": 


pass comnand string to operating system 


< 


• 


Mp - 1) - "\f ; 


STOP exit (0) 




++nl; 


break; 


terminate program 




return ""; 


case ' v ' t 


Slop s $ iprintf ("*s\n", s) ; 


) 




Mp - 1) - '\v-\- 


exit (0); ) 


P - 


string; 


case "W": 


print string and terminate program 


if 


SP+ + ) 


break; 


SWAP v$((n[,n!l 1, vS((n[, nl) ] (see text) 




«p++ — ' ■ ; 


default: 


exchange contents of specified variables 


while (*a> 


*p++ *» c; 


SWAP vf (n[,n]l ],vl (n[,n])l (see text) 




if ((«p++ - «a++) — 'W'l 


J 


exchange contents of specified variables 




< ) 




TROFF . . . none 




switch (c - «a++) »p » 0, 




turn trace off 




{ return 


string; 


TRON . . . none 




case 0: } 




turn trace on 




— a; 




TYPE . . , none 




break; EOF 




declare new variable types 




case '0': 




WHILE x DO SI ... ENDWBILE while (X) (si; ... ) 




for (c - j - 0; isdigit(*a) it (j < 4); 






while expression true perform statements 




++j, ++a) 






WRITE #n,L none 




c - (c « 3) + <*a - '0'); 






write null-delimited list to file n 




Mp - 1) •= c; 
break; 
case 'b': 






EXAMPLE C EXAMPLE 




Mp - 1) - '\b'; 






Following la this month's example C program ; It provides a version of the 


break ; 






echo program compatible with both UNIX System 5 and with UNIX BSD 4.2. 


case ' c" : 
— p; 

++nl; 














♦include <stdio.h> 




break ; 






♦include <ctype.h> 




case •f: 




♦include " version. h" 




Mp - 1) - '\f<; 








break ; 




char stringl256), 'expand!), «p, «q; 




case "n": 




Int c, i, j, nl, sp; 




MP - 11 - '\n\- 
break ; 




main (argc, argv) 




case ' r ' : 




lnt argc; 




Mp - 1) - -Vr'; 




char *argvn-" 
j 




break; 




for (1-1; i < argc; i++) 








fputs (expand (argv[l] ) , stdout); 








if (!nl) 








putct'Xn', stdout); 








f f lush (stdout); 
exit (0) ; 




1 






■ 






1 

char "expand(a) 

char *a; 

1 


FOk 


WMMmWMfmNEED TO KNOW 


1 68 MICRO 




■■HHHH 


| JOURNAL™ 







SOFTWARE 



A Tutorial Series 

By: Ronald W. Anderson 
3540 Sturbridge Court 
Ann Arbor. MI 4810S 



USER 



From Basic Assembler to HLL's 



OS-9, PLuS and PAT 

Today is Saturday. Last Monday I decided to bile the bullet 
and start to do a version of PAT for PLuS. I had dumped the 
FLEX 6809 PL/9 source code over to the Mustang system 
and made a few suits at the conversion. Primarily, the 
difference is in how OS-9 handles files. Actually OS-9 takes 
care of more of the detail for the user than FLEX does. I 
went through the code removing the File Control Block 
declarations and putting filenames into strings to be pointed 
at when calling OS-9 to open files. On opening a file. OS-9 
returns a path number used from that point on to refer to the 
Hie. including when it is closed. 

The PLuS compiler files. lib did not have the equivalent of 
the GETFIL call in FLEX to gel a filename from the 
command line, but with a liltle help from ihe OS-9 manual I 
was able to write one, as I mentioned last time. Anyway, I 
got down to business, first gelling Ihe whole big file to 
compile without errors. On Monday night, I had reached 
that point, but the compiled output didn't run at all. It just 
didn't do anything. I had to reset the computer to gel 
conool back. (Fairly normal for translating a big program). 
The following week consisted of long evenings of finding 
and fixing bugs, bul after that time, the job was about done. 
One problem that I had was thai in FLEX a file error is 
relumed in a location in ihe File Control Block, so for 
example, when end of file is reached in reading an input file, 
an 8 is stored in the second location in the FCB. Later I 
could and did go back and look al the FCB to see if Ihe 
input file had run oul. OS-9 returns an error in a register 
after a file operation, and so the end of file error on ihe last 
read of an input file goes away on the next file operation. I 
had to save ihe fact thai the input file had been emptied in a 
flag I called "eo_infile". I had ihe opposite problem in a 
few instances where I carelessly got operations out of order 
in a loop and tested Ihe error location before doing the next 
file operation. If a file error was left in the location called 
OS-9_error in Ihe PLuS library, I had an erroneous error 
message. The older had been OK in Ihe FLEX version 
because no error would be present before performing a file 
operation on a new FCB. I finally gol Ihe operations and 
ihe tests in ihe light order, and things were belter from that 
point. 

I learned how lo ask OS-9 for a big buffer space and set 
PPAT as I have called Ihe Plus version for now (to 
distinguish il fiom the C PAT that I was using to edit it), to 
use a I00K buffer so I could use il to edit itself. I still had a 
few peculiar file error messages under some conditions, but 
they did no harm. A couple days later. I spent ihe evening 
bying lo find a bug thai caused the output file lo be open 
after I thought 1 had closed il, so I couldn't delete the file on 
abandoning an edit. It turned oul, of course, that I had 
misunderstood ihe CREATE procedure which not only creates 
a directoiy entry, but also opens a file. I had opened il ihe 



NOTES 



second time (on another path) by opening it for write. I am 
still puzzled as to why OS-9 didn't object lo opening ihe 
same file twice on two different path numbers. With that 
cleared up, the file handling seemed to be all squared away. 

The compile lime for the whole PPAT on the Mustang 
68020 system was 22 seconds. On ihe 68008 system il was 
70 seconds. I found one place where Ihe PLuS code is 
slower than the Microware "C" version, in the loading and 
saving of files from and lo Ihe hard disk. The PLuS version 
look aboul ihree limes as long lo read a file as Ihe "C" 
version. In all other respects it seemed to be about 
equivalent in performance, and PLuS generates aboul 20% 
less object code. 

I wroie a letter to Windrush lo inquire about ihe slow file 
reading, but I had ihe ihought that perhaps "C" had a buffer 
built in as part of the "C" runtime package, so it could read 
a block of data from a file and then get the data via a shoiter 
and quicker program path. I noticed that PLuS files.lib had a 
"read__n " procedure. 1 had used the single character read call 
"read(path)" which returns one character. The file was input 
by reading il one character at a time into the edit buffer until 
an end of file error was detected. PPAT loaded ita own 
source, about 6SK of text, in 68 seconds. I changed Ihe 
procedure lo read a large block at a lime using 
"read_n(infile.l0O00,. buffer);" That call essentially read 
10000 characters at a lime. Then I could increment the 
pointer by the number returned by the procedure, which is 
the actual number of characters read. It will read 10000. the 
number specified, unless the end of file is reached. On end 
of file it slops reading, and ihe procedure returns the number 
of characters actually read. I found thai il read one character 
pasl ihe end of the file, so I had to decrement my pointer, 
and all was well. There was a slight improvement. Now il 
reads ihe source file in just about 2 seconds, aboul 35 times 
faster. Clearly there is a large overhead in the OS-9 call lo 
read a single character. Aboul Ihen I had the thought of 
telling read_n lo read 100000 characters since the parameter 
is a LONG daia type, and thai it would slop al the end of file 
and return the number read. I Died it and got into difficulty 
with finding garbage pasl the end of my input file. I don't 
understand why il didn't work but I backed up to the previous 
version and all was fine again. 

Writing Ihe buffer lo ihe output file was even easier. I 
know ahead of lime just how many characters the file 
contains. Il is first moved to Ihe beginning of the buffer, 
so thai il starts at location (0) of ihe buffer. The pointer 
'below' then contains the count of characters. OS-9 and the 
files.lib of PLuS also support a "write_n* procedure, so I 
simply wrote all the characters out in one call. The file was 
written in just aboul three seconds! I note with some 
puzzlement, that the 68008 syitem actually reads and writes 
this long file from and lo ihe hard disk faster than the 
Mustang 68020 system. There are two possible reasons for 
this. The Mustang contains a Xybac disk conoollcr and Ihe 



18 



Oeie>b«r87 



'68' Micro Journal 



Peripheral Technology 68008 board is connected to a 
Western Digital controller. Secondly, the P.T. system is 
running the newest version "Professional OS-9" while the 
Mustang is running OS-9 of a year ago. Perhaps the file 
accessing has been streamlined. The difference in 
performance is slight, but certainly obvious. (Don Williams 
has confirmed that the difference is because of the disk 
controllers). 

The systems perform quite well. PPAT will move from the 
lop of this 6SK file to the bottom in about three seconds on 
the 68008 system and about twice as fast on the 68020. 
The most visible difference was in a processor intense 
procedure of searching for a string. I put a unique string at 
(he end of the big 65K file and search for it from the lop of 
the file. The 68008 version took 5 seconds to find the 
string and 2 more to move to it. On the 68020 system, the 
search seemed to be more like a second, with one more to 
move to the bottom of the file. The time does not seem to 
depend on the length of the string. 1 suppose a non-match 
is generally detected after comparing one or two characters. 
These times were after a little optimizing of the search 
routine. 

I figured at the start of the project that a SO page source 
code program would be a pretty good test for PLuS. It was 
more of a test of my programming ability and understanding 
in the area of the file handling, since I found only one new 
bug in PLuS. and I am not yet sure thai it is an error. The 
manual doesn't mention the MOD function, though the old 
PL9 has that function implemented. Anyway, the compiler 
didn't complain when I used thai function, but it didn't give 
me the correct results. I found no other bug in PLuS all 
week. 

Later I decided to look at the string search procedure in a 
little more depth. I spent an hour flow charting the 20 or 
so line procedure and thought I had really streamlined il. 
Later I typed it in and tried it, finding no detectable 
improvement over the previous versions. I thought of 
several possible improved ways to do the search. One idea 
was to search for a match of an integer or long value, by 
fooling the compiler into thinking the search siring and 
buffer were arrays of integers or longs. I suspect that with a 
lot of fooling around with memory alignment and careful 
handling of the start and end of the buffer, that approach 
would yield a faster search, but I have to look at each 
character in the buffer and determine if it is a CR. I must 
keep track of the current line, so when I see a CR I must 
increment or decrement the current line variable. This would 
mean that my new scheme would involve scanning the buffer 
twice, and so would probably slow tilings down. 

The point is that eventually one reaches the point of 
diminishing returns in trying to improve a program's 
execution time. At this point. I could devise a new method 
of keeping track of line numbers, perhaps by imbedding line 
numbers in the buffer. Then I could just match the string 
and go look for the line number at the beginning of the 
current line. An integer double byte would do for line 
numbers up to 32767, and I would then have to add some 
distinguishing character to Hag a line number. 

To my never ending list of possible improvements, I add 
the idea of storing the text in the large edit buffer in 
compressed form. That is. wherever there are two or more 
space* in sequence, use the HT S09 code followed by a space 
count. The loading of the large edit buffer to the screen 
buffer would expand these horizontal tab functions and vice 
versa. This would mean that one could edit a much larger 



program in one chunk, and programs could be stored in 
significantly smaller files. The PLuS source file for PPAT is 
about 65K characters. There is a great deal of indentation in 
the program source. Many lines reach an indent value of IS 
or more, and most all lines start with at least three spaces, 
so there would be considerable compression. 

Impressions 

I have been working with the 68008 and the 68020 
systems rather extensively for the past couple of weeks, and 
for several hours day, at least for last week, the 2 MHz 
6809 system with 8" floppy disks. Let me say that after 
several days with the 68008 system running in the same 
room with ihe 6809 system, il is a real drag to go back to 
that 6809 system. I was compiling programs of about equal 
size (22-23K of object code) on the two systems. First, 
after the optimization described above, the file load and save 
operations for editing got to be intolerable on the old 
system. Then I noted that I could compile a program three 
limes on the 68008 system while the 6809 system was still 
chugging along compiling a program. The speed advantage 
for processor intensive operations seems to be right around 
3.5. 

Though OS-9 is a fine operating system, there are 
applications in which it lends to get in the way. In our use 
of computers in our company's product, we now are set up to 
plug a disk drive and terminal into the final hardware ihat is 
going to be shipped as a special measuring system and 
machine control combined. We can ihen develop the 
program or at least debug its, right in the final hardware, 
recompiling and trying the code immediately. When we are 
satisfied with the overall performance, we go program some 
EPROMs and the job is done. Obviously for our purposes, 
something simpler like SK*DOS would be more 
straightforward. Our final product runs without operating 
system overhead of any kind, so the simpler the O.S. the 
easier to "disentangle" the program from it, SK'DOS looks 
very promising for our future, and I have been doing some 
preliminary things with il. ihough we are hopeful for a bit 
more in the way of operable software to be available for 
SK*DOS before we can really begin to make the switch. 
I've promised io do a version of PAT for SK'DOS, hopefully 
when the present efforts to get a fairly full "C" compiler 
come to fruition. It has occurred to me that I could write the 
I/O and File Handling libraries for PLuS so that its output 
code would run under SK'DOS, but then I would have to 
compile under OS-9, convert to the SI-S9 format, run the 
code out a serial port to another system, switch operating 
systems to SK*DOS. read the code back in from the other 
external system, and convert it to a true binary loadable file. 
While lhat cycle is not unusable once the library files are 
debugged, I wouldn't want to have to debug communications 
programs, conversion programs, I/O and FILE handling 
libraries AND my SO page PAT program all at the same 
lime. Neilher do I have the luxuiy of a great deal of lime to 
spend working out so many phases of the project. Given a 
reasonable "C" compiler I can start with my "C" version 
that now runs under OS-9, use the serial trick to gel the 
source file on the hard disk under SK'DOS, edil wiih the 
very usable editor that is available, and get PAT working on 
that system. 

Folks at Windmsh. if this seems like unfair pressure, il is. 
and I hope it works. You've told me you have no intention 
of gelling PLuS up under SK'DOS. I told you. and I haven't 
changed my mind, ihat PLuS to run under SK'DOS would 
probably do more for SK'DOS than it would for PLuS, so I 
can see why you mighl nol be willing to expend the effort 



68' Micro Journal 



October "87 



19 



lo do the Job. Let me jul say that 1 see the combination as 
the only way our company can go, and that doing *o would 
put u« in good shape in our plan to "upgrade" our product to 
68XXX processors for the next several yean. Graham Trott 
tells me thai PLuS is written in PLuS. and that 1 would have 
an easier time following it than the original code in 
assembler for the 6809. 1 publicly volunteer to give a good 
by lo potting PLuS over to the SK'DOS operating system i I 
you folks will let me have the source or the minimum part 
of the source that 1 need in order lo write and debug the 
links to SK'DOS I/O and disk Hie handling. In exchange, I 
will agree to make the result your property to sell. 1 don't 
want any royalty. Frankly 1 don't know if 1 am up to the 
task, but I feel the need so strongly for an efficient compiler 
and a simple operating system combination that 1 am 
willing to give it a by. 1 might also mention that I might 
nead more than a little help from Peter Stark as well, though 
the SK'DOS manual is fairly extensive and descriptive in 
temu that 1 understand. 

A couple of weeks have gone by since the writing of the 
above, and 1 have managed to gel PAT in PLuS form finished 
to the point of reading the same terminal configuration file 
as the "C" version. The PLuS version is still smaller than 
the "C" version by about 10%, which is not really very 
significant. I've added one more parameter to the (am mil 
configuration files for both versions, the size of the edit 
buffer in thousands of bytes. 1 got tired of hitting ESC on 
the OS -9 system and popping out of my current shell and 
therefore losing my environment parameters. 1 had one 
other thought that would eliminate the environment 
parameters altogether. PAT could look for the terminal 
configuration file 'termcon' in the current working directory. 
The user would have to have a copy in each directory in 
which he edits, but on a multi-user system, each user could 
have a different version of teimcon (given that each user has 
a different terminal, of course) in his own working 
directories. (I had even thought briefly of having the path 
specified in the tamcon Hie, but having lo find the file lo 
read the path to it wouldn't work at all, so 1 gave that one 
up as my dumb idea of the week). 

Programming Snarl 

Have you ever noticed that the hardest pan of getting most 
programs running is the control of the program flow? That 
is, in a language like Pascal or "C" (or PLuS) the careful 
construction of the IF-THEN-ELSE structures. Sometimes the 
scope of a THEN or and ELSE can become obscure, 
particularly if each is a long compound statement with a 
number of BEGIN ■ END pain enclosing WHILE or other IF 
THEN statements. 1 spent all afternoon today dying to 
untangle a single page of code. Of course I was looking at 
the wrong part of the code to find the error. 1 had set up an 
array of strings and was finding a particular search suing in 
the array, and then associating its position with an index 
into other arrays lo store or recall information. The string 
was actually an 8 digit part number. 1 blamed my siring 
search procedure for most of the afternoon, bul then by 
adding a couple of print statements 1 found that 1 was never 
storing the string in the array in the first place. At that 
point I quickly found thai an ELSE followed the wrong END. 
Moving it to the correct place gave me instant results and 
the program now runs fine. The problem would have been 
obvious except for the fact that my indenting had been 
fouled up by a program change previously. 



My first program for a balancing machine with my current 
company all Hi in one 2716 EPROM, and it used a 6116 2K 
by 8 RAM. The whole program (in assembler) and RAM fit 
on a SWTPc 6809 processor board. This latest program will 
use 24K of ROM in the form of 2764As, and two 8K by 8 
battery backed up RAM chips for a total of very nearly 24K 
of program and I6K of RAM. In some other and larger 
applications we have used multiple processors, or rather 
more like multiple computers communicating via serial 
ASCII data. We use software handshaking. That is, each 
command is acknowledged with an appropriate and different 
response or an error status message. We've come a long 
way since that first 2K program (I had about 20 bytes free in 
the 2K ROM). It becomes obvious at this point that we are 
about to outgrow a 64K memoiy map with our main 
programs. We figure that the 68008 will give us a 2.S to 3 
limes spaed advantage over a 2 MHz 6809, and what for now 
will surely seem like "unlimited" memoiy for program and 
data. 

Reminiscences 

1 was thinking the other day about my first little computer 
system other than that initial single board computer with 
the LED display and the Hexadecimal keypad. If I remember 
correctly, one memoiy board in that system held 4K bytes. 
It was available as a 4K board with 2K worth of chips and a 
2K expansion kit. 1 bought that first system with 8K 
BASIC and 16K of RAM, and on thai, 1 had my first taste of 
programming in BASIC. That 16K cost around S4O0. Later 
1 bought some 8K boards at around S22S each, making 64K 
of memory about $1800, bul then the power requirements 
were such thai one would have to rebuild the power supply 
in those early SWTPc boxes to power that much memory. 
Also there were only 8 card slots and 56K of memory 
possible because of the monitor and I/O addressing. 1 
understand that now 1 can buy an 8K by 8 CMOS RAM chip 
for about SIS, so I could have my 64K of STATIC RAM for 
S120. Of course now. anything less than 512K or 1 Mbyte 
is considered "small". 

Am 1 saying 1 want to go back to "the good old days"? 
No wayl 1 had BASIC, a good assembler, and a dumb line 
editor to use. 1 couldn't do vety much vay fast with that 
son of system. My first programming was done with 
cassette tape for mass storage. Thai 8K BASIC took a good 
5 minutes to load to memoiy. 1 would start il loading and 
go to eat supper, reluming to find it ready lo run, or having 
stopped with a read error. A year later 1 bought a pair of 5" 
floppy disk drives and wondered how 1 would ever fill a disk 
wiih files. (The old SSSD 35 track disks held some 85K 
bytes or so of files). When the DSDD 8" disk drives got to 
the point of being feasible to purchase, I bought a couple 
and realized thai each disk held about as much as 12 of the 
little disks, though those disks never were filled to capacity 
so in practice 1 put about IS disks worth of information on 
one 8" disk. Now it is clear that eveiy bil of software that 1 
run on this old 6809 system, and all my data files would 
easily fit on one 20Mbyte hard disk. 

No, 1 don't want to go back. Bring on the latest and 
newest in faster microprocessors, hard disks, operating 
systems, user software... I'll be light here waiting to use 
them. Hopefully 1 will be able to write about them too. 

EOF 



FOR THOSE WH 




68 MICRO 
JOURNAL^ 



20 



October "87 



'68' Micro Journal 



f-r 



PASSWORD 




A SECURE INVESTMENT 

"Mine..." Eyebrows raised, I turned and looked 
at my son. He was sitting where he could see the 
screen. 'That's your password, isn't it?" Even 
though, it wasn't displayed, he had guessed it. It 
gave me pause to think. 1 have worked with 
computers, for years. Most of them, multiuser 
systems. 1 had always prided myself on being 
security conscience. Why was 1 using a simple four 
letter password on my home system? 

1 changed my password right away after that, 
but it made me think about another incident. It 
happened sometime ago with the same son. Now 
this kid is pretty bright, but 1 think, no smarter 
than any other who had been around home 
computers since he was four years old. Steven 
needed to transfer an OS-9* file from a standard 
format disk to one for his CoCo*. Even though, he 
had utilities on his own system to do it, he went 
with the easier way of using my "/ccO" (for 
COCO*) device descriptor and compatible driver 
software. No problem. Except that the file 
belonged to user zero, and on my system he has a 
different user number. Well, he signed off and tried 
signing on as superuser using the same password as 
was on his own system. It worked. The system 
manager password hadn't been changed since 1 
bought the computer! 

These two incidents spun around in my mind for 
a while before 1 decided that part of the problem 
was that it was hard to change passwords on an 
OS-9* system. Well, not HARD, but inconvenient. I 
had to sign on as superuser and edit the password 
file and then go back and sign on as myself to go 
about my business. There was no user accessible 
password changing program. 1 looked around, but 
couldn't turn one up that 1 liked. So 1 wrote my own. 
My feeling is that even for a person who works 
with computers all the time system security begins 
at home. 

What sort of program did 1 want? I have 
always worked with multiuser systems as part of 
my job. 1 have come to expect a certain format from 
password changing programs. Basically they make 
sure you are who you say you are and then ask you 
for your new password and change the password 
file to reflect your request. 1 didn't want to take 



forever to write the thing. 1 like the TOOLS 
approach to systems. 1 would rather use a group of 
little programs (especially if they are already 
written) than one big one to accomplish something. 
Finally, I still have my trusty (rusty?) level one 
system and memory is a concern. All of these 
constraints can easily be handled by BASIC09*. 

The program comes in two parts. One part is an 
assembler subroutine called USER1D. In order to 
change the password file, the program has to have 
access to it. User zero is usually the owner of the 
file and should be the only user who can read it. 
After all what does all this accomplish if 
everybody can read it? There are two ways to get at 
a file you don't own. You can change the attribute 
bytes in the file header or you can make the system 
think you are the legal owner. Going after the file 
header is fairly messy and the program still has to 
know who you are so it doesn't change someone 
else's password for you. User zero should be the 
only one with that kind of power. Even If you know 
someone elses userid and password, you should still 
have to go to the trouble of signing on as him to 
muck up his password. Now since we need to know 
who called us and we need to have access to a file 
that probably doesn't belong to us, we need a way to 
get to the descriptor for our current process. OS-9* 
has such a way. It comes as two OS-9* system calls. 
These are F$id and FSsuser. F$id returns the owner 
number (user Index) of the current process (that's 
us). FSsuser changes the user number to whatever 
you say (no questions asked.) 

USERID is callable by BAS1C09* and accepts 
one or two integer values. The first (and maybe 
only) variable returns the current user index. If 
there is a second integer variable passed to it, this 
value is used to set the userid of the process. The 
main PASSWORD program passes a zero in this 
second value. This makes the process match the 
owner of the password file and allows it to read, 
copy and delete it. 

1 tried to make PASSWORD as general as 
possible, but there are some things to watch out for. 
The two file variables, TF1LE and PFILE would 
have to point to your system device. Password uses 
shell commands, TMODE, ATTR and RENAME. 
These must be available in either the module or 
execution directories. I could be accused of taking 



68' Micro Journal 



October's? 



21 



the tools concept a little too far at this point. Yes, 
what I wanted could have been done from inside 
BASIC09*, but why make a program that is only 
used once in a while more complex than it has to be? 
The only shell command I hesitated to use was 
ATTR. There ought to be a way to tell BASIC09* 
not to make a file public read. I looked through the 
documentation, but couldn't turn up anything. The 
last thing that needs mentioning is, by setting 
everything to upper case I don't have to mess with 
mixed mode characters. It also means that ALL 
USER DATA in the password file (ie. name and 
password) must be UPPERCASE. Also the password 
file is left around as long as possible. This means 
that up to the end there is at least one copy of it on 
the system. 

There are some things that working on this 
program and especially on this article have 
brought to the surface. Security is a sword with two 
edges. As the system manager you are obligated to 
keep your users' files out of harm's way. This 
includes not letting anyone but the owner mess with 
them. In trying to do that though, you wind up in a 
position do that very same kind of messing yourself. 
I could have made the program much simpler if I 
had just assumed that the person running it would 
be authorized to use it. Leaving the password file 
with public access is the most straight forward way 
to do that. This is unacceptable on the grounds that 
if anyone's password can be read, it gives access to 
their files. However, by trying to get better control 
I have opened a whole new can of worms. The 
implication of the USERID routine is that I have 
now made it easier to get to those very files I have 
been trying to protect. The routine can be used in any 
BASIC09* program to not only access a file but 
change it so that the rightful owner can't even get 
to it! I had to be very careful in the design of 
password to make sure that a user was really who 
he says he is. 

In my work with PASSWORD, I have explored 
the tools concept. This came in the form of shell 
commands run from inside a BASCI09 program. I 
pursued the use of a BASIC09* callable assembly 
language subroutine. Coincidentally, the program 
became a point from which to take a look at small 
system security. Like most programming projects, 
this one has been both interesting and an education. 
Questions and comments are welcome, and may be 
addressed to: 

O. E. Groves 

10912 Knights Bridge Ct. 

Reston, Virginia 22090 

• OS-9 is a registered trademark of Microware 
Systems Incorporated. BASCI09 is a trade mark of 
Microware and Motorola Inc. COCO refers to the 
Color Computer, a Product of Tandy Radio Shack. 



tJili <nl*rils BrlJde Ct. 
Reston. Virginia 22090 
»j«ust 14, 1987 

Don Williams 

Coaputer Publishing center 
S9J0 Cassandra Sitltn Rd 
Hlnon, Tenn. 373t3 

Dear Don: 

I see by tne old calendar It's been Just snort of 
three years since I sent ay first article to 68' Micro. 
Tne last tning I sent you was Just about one year ago. 
Does that make me a reguler contributor? Well, hope- 
full/ what I leek In quantity, I aake up for In quality. 
The project I put together this time, continues (aore or 
less) ay presentation of system utilities. It's the Kind 
of prograa 1 like to see In 68' Micro end 1 believe In 
trading In kind. 

Like the rest of the stuff I've sent In over the 
years, the article appeers twice on the disk. The rile 
called "article .onel Ine" hes no control characters, no 
hyphens, and no multiple speces. "Article .fat" Is a 
suggested format for the article and was used to produce 
the printed version In the package . "Password. 609" Is 
the aaln program In 8A3IC09 source and "userld.esa" Is a 
subroutine needed to run with It. The ".1st" versions of 
the programs are foraated by their respective compilers 
and the other file Is this cover letter. 

I hope to see oany aore Issues of 68' Micro. I'll 
see what I can do to keep ay contributions up. I bet If 
ell your subscribers sent In only one article eech year, 
you'd be swamped. 




0. E. Groves 

Editor's Note: Thanks Oral for the nice words. I 
wholeheartedly agree. I guess some of the new 
comers don't understand where we came from. I 
wish everyone would keep in mind that we are a 
"contributor supported" magazine. Without the 
support and input of folks such as yourself, we 
would have closed the doors a long time ago! It is a 
paradoxical condition, but at this stage in the game 
we are the third oldest computer magazine in 
existence, the "Granddaddy" of the present rage 
"desktop publishing" and have more readers and 
distribution and less advertisers than at any other 
time in our 10 yaar plus history. 

1 also hope to see many more issues of 68 Micro 
Journal, but I must admit, we not only need article 
input, but could sure stand some new advertising 
blood. Even in our time of need we fiave just recently 
refused advertising because the product didn't meet 
the standards we set years ago. I still believe, 
despite lawsuits, poor or no profits, dwindling 
advertisers and all the other adversities we are 
presently going through, because of loyal folks such 
as yourself, we will be around for quite some time to 
comet 

Thanhs Oral - God Bless! 

DMW 



22 



October 67 



'66' Micro Journal 



PROCEDURE PASSWORD 

(■ Thl« program changes Us currant user's piuwrd In Us /vO/sys/ 

{• password flla. If the caller Is user ura , the password far any 
(* other user any b* changed , 

<* 

(* NfflOR OATF. vtasicn coa-orr 

J* 

<• OC GROVES 07/10/87 1 INITIAL VERSION 

(- OC CRAZES 07/25/(7 2 File names converted Co variable*. 

t* Fix uaerld routine 

C 

(• Released Into public domain 19S7 - OE Groves 

<* 

{• define and lnltlalte variables 

DIM unaK,oa%Ri:sniINC[32]; uld.prl:INTBCER; XDIH,t»IR.EX:STRING[321 

DIM NUSER: INTEGER 

DIM OUS£R,OPATK,IPATH,PROCMn,I,N:lHTECER 

DIM OPASS, NPASS. TPASS. NAME, PFILE. TFILE: STRING [ 32) 

DIM OKAY: BOOLEAN 

ON ERROR GOTO ID 

(• These flla nana will need to be changed to fit another system 

PFILE - -/VO/SYS/PASSwCRO- 
Tni£ - -/VO/SYS/PASSTQff- 



QDWIlf 
IF I -> 4 THEN 
PRINT 

PRIST •CHECK YOUR MFCWWrTCW AMD START AGAIN" 

error s« 

□OIF 

{• Copy the password file while looking for natch to 
I" user ruse and password 
OEATE #Ct»th,TnX£:OTO»TE 
OPEN »Ipath, PFILE :R£AD 
WHILE NOT(DOF{«Ipjthl> DO 
INPUT «Ipath,unam.pew-),uld,prl,XDlR,DOlft,EX 
IF (UKAH - NAME) AND (PSND • OPASS) THEN 
IF (OOSER - 0) OR (DID - OUSER) THEN 
PStO • NPASS 
OKAY • TRUE 
END IF 
EWIF 
PRINT »Opath, unam;-,-;p«wri;-,-ruld;",";prl;",";XDIR;",";DOlR; 

oraoou 

CLOSE IIPATH 

Ipath - 

CLOSE WPATH 

opath - 

DELETE PFILE 

SHELL "attr •♦ TFILE ♦ " -pr; RENAME ■ ♦ TTILE » " password* 



oi 



IPATH • 
OPATH - 
ouser-ti 
nuser^) 
OKAY • FALSE 



npau - -*" 

<• gat user number froa 
run uaarid(ouaer,nuaar) 



process descriptor and change to user 



(• have all input converted to uppercase 
shall -tapde .1 upe- 



(* gat user information from the terminal 
WHILE (I<<) AND (TPASS o NPASS) DO 
(* turn on echo of user name 

shall -tBDde .1 echo* 

INPUT -WHAT IS YOUR USER ID NAME? -,MAM£ 

(• turn off echo of password data 
ahell -tmode .1 -echo* 



INPUT -WHAT Is YOUR OLD PASSWORD? ", OPASS 
INPOT -ENTER NEW PASSWORD PLEASE. -.NPASS 
INPUT -ENTER IT ONCE MORE PLEASE. ",TPASS 
IF TPASS O NPASS THEN 

PRINT 

PRINT THE SECOND TIME WASN'T THE SAME- 
END IF 
IF OPASS - NPASS THEN 

PRINT 

PRINT -CAN'T USE THE OLD PASSWORD ACAIH" 

TPASS • NPASS«-«- 
END IF 



{• If no match found, print 
IF NOT (OKAY) THEN 

PRINT -THAT IS NOT YOUR USER ID 
□OIF 

(■ fix terminal output 
shell -unoda .1 -upe echo- 
END 

(• handle errors 

10 N-CRR 

IF NO0 THEN 
PRINT 

PRINT -ERROR > -;N 

PRINT -NO CHANGES HADE- 
PRINT 

ENDIF 

IF IPATH o THEN 
CUKE flPATH 

ENDIF 

IF OPATH o THEN 
CLOSE (OPATH 
DELETE TFILE 

ENDIF 

shall -cmoda .1 -upe echo* 



PASSWORD NOT CMAWGED* 



oooo 

0001 
0044 
0087 
0OA4 
0OA7 
0008 



B:PROCEDOR£ PASSWORD 

(• This program changes the currant user's password in the /v0/ays/ 

(* password flla. If the caller la usar rero .the password for any 

(• other user may be changed. 

(• 

(- adtnor date version comment 

<• 



s 

5 

s 

3 



OOOB 

oioe 

0148 

01SD 
0160 

01 OF 
0192 
0193 
01 M 
01BS 

oiu 

01E9 
0204 
0224 
022B 
0231 
0232 
0272 
0273 
028A 
02M 
02A2 
02A9 
02BO 
02B7 

02 BE 
02C4 
02CB 
02D3 
02TB 
02DC 
031B 
032A 
032B 
0353 
0363 
0364 
038D 
03A1 
03BD 
01CE 
03F1 
03F2 

0413 
0425 
0426 
0449 
04 K 
048F 
049C 
04 9E 
04C1 
04C3 
04DO 
04D2 
04F6 
0502 
0504 
OSOF 
0513 
051F 
0521 
054B 
054F 
0551 
0586 



(• OC GROVES 01/10/87 1 INITIAL VERSION 

<• 0£ (3«0VE5 07/25/87 2 Hie names converted to variables. 

(* Fix userld routine 

C 

(" Released Into public domain 1»87 - OE Groves 

(♦ 

(■ define and initialze variables 

DIM unam,pswd:STRING|32); uld,prl :1NTEGM; XDIR,DDIR,EX:STRINC[321 

DIN NUSER:rWTECER 

DIN OUSER^OPATH.IPATN.PaOCADO, I, N: INTEGER 

DIM OPASS, NPASS, TPASS, NAME, PFILE, TFTLE : STRING[32] 

DIM OKAY: BOOLEAN 

ON ERROR GOTO 10 

(• These file name ulll need to be changed to fit another system 

PFILE--/V0/SYS/PASSWORD- 
TFI1X— / VO /SYS/ P ASSTEHP " 

IPATH-0 

OPATH-0 

OOSER-0 

HOSER-4 

0KAY-FM.SE 

1-0 

OPASS-" " 

KPASS-"f 

{• get user number from process descriptor and change to user 
RUN userld (OOSER, NOSER1 

(* liave all Input converted to uppercase 
SHELL t/node .1 upc- 



[■ get user Information from the terminal 
MQU I<4 AND TPASSONPASS DO 
(• turn on echo of user name 
SHELL "tsode .1 eclio* 
INPUT "WHAT IS YOUR USER ID MAKE? •.NAME 

(■ turn off echo of password data 
SHELL "tmude .1 -echo* 



INPUT "WHAT IS YOUR OlD PASSWORD? *, OPASS 
INPUT -ENTER HEW PASSWORD PLEASE. ", NPASS 
INPUT "OJrtfl IT ONCE MORE PLEASE. ".TPASS 
IF TPASSONPASS THEN 

PRINT 

PRINT "THE SECOND TOE WASN'T THE SAME* 
ENDIF 
IF OPASS-WASS THEN 

PRINT 

PRINT •CAN'T USE THE OLD PASSWORD AGAIN" 

TPASS-4JPASS*"*" 
ENDIF 
I-I»l 

oidwhile 

IF I>-4 THEN 

PRINT 

PRINT "CHECK YOUR INFORMATION AND START AGAIN" 

ERROR 56 
EKDIF 

(• Copy the password file while looking for match to 
(• user name and password 



uid; 



prl; *, 



"+TF1LE+* password" 



05 9F CREATE »0PATK,TF1L£:UPDATE 

0SAB OPEN 4IPATH, PFILE: READ 

0587 WHILE NOT(EOF(»IPATH|) DO 

05C2 INPUT *IPATH,unaa>,pswd,uid,prl,XDI!t,DDia,EX 

05E4 IF u/van-HAME AND pmd-OPASS THEN 

0MD pewd'^PASS "-" °" Ul*WSER THEN 

0615 OKAY-TRUE 

061B ENDIF 

061D ENDIF 

061F PRINT IOPATH,unam; *,-; pswd; - 

0659 EMONHILE 

065D CLOSE 4IPATH 

0663 IPATH-0 

066A CLOSE 40PATH 

0670 OPATH-0 

0677 DELETE PFILE 

067C SHELL "attr "+TFILE*" -pr;R£NAME 

06M 

06A9 (* if no match found, print message 

06CC IF HOI [OKAY) THEN 

06D6 PRINT "THAT IS NOT YOUR USER ID. PASSWORD NOT CHANGED" 

0708 ENDIF 

070A {* fix tjmlrul output 

0720 SHELL -tmode .1 -upc echo" 

0736 END 

0738 

0739 (* handle errors 

0749 10 N-6RR 

0752 IF NOO THEN 

07SE PRINT 

0760 PRINT -ERROR > ".- N 

0773 PRINT "NO OUNCES HADE- 

0786 PRINT 

0788 ENDIF 

078A IF IPATHOO THEN 

0796 CIASE flPATH 

07 SC ENDIF 

079E IF OPATHOO THEN 

07AA CLOSE tOPATH 

07BO DtLCTE TFILE 

07BS ENDIF 

07B7 SHELL "tirote .1 -upc echo" 



DDIR; *,"; EX 



PROCEDURE USERID 

BA5IC09 callable subroutine to got/change csller's USER ID. 

Syntax: 

RUN userld <oldld,newld) Where oldld and neuld are inteoer 
variables and neuld Is optional if change Is wanted. 



fSsuser set Sic define system call 

vers set 1 version number 

type set sbrtn«objct 

rev set roanttl 

i 

mod uidend, uldnasc, type, rev, uidstrt,0 

If pi 

use /dl/elektra_defa/oa9defs 
endc 



K 

3 

r 

3 



uidname fci /userld/ module name 
f cb vers 

t 

* define stack areas 

* 

org 
return rab 2 subroutine return addrs 
count rob 2 I of parms passed from BASIC09 
olduld zmb 2 addr of 1st para 
oldslz rob 2 byte count of 1st para 
newuld rmb 2 addr of 2nd pain 
news It rnb 2 byte count of 2nd para 

uidstrt ldd count, s any parms? 

bag ulderr problem 

ldd oldslz, s vlll user nun fit? 

cnpd 42 must be Integer 

bne ulderr problem 

os9 fSld sys call for procld and userld 

sty [olduld, s] put userld away 

ldd count, s how many parms? 

decb 

bag uldrtn need only return old uld 

ldd newslt.s 

cnpd 42 must be Integer 

bne ulderr 

ldy [ibewuld,s] get new user number 

os9 fSsuser set new user Id 
uldrtn rts 
* 

* paianvter error return 

* 

ulderr comb set carry 

ldb 456 parameter err number 

rts 

enod 
uldend egu - 

end 



Ml crow 
- OS-9 

00001 
00002 
00003 
00004 
0000S 
00006 
00007 
00008 
00009 
00010 
00011 
00012 
00013 
00014 
0001S 
00016 
00017 

oooie 

00020 
00021 



re 05-9 Assembler 2.1 08/16/87 12:46:53 
System Symbolic Definitions 



PROCEDURE USERID 

BASIC09 callable subroutine to get/change caller's USER ID. 

Syntax : 

RUN userld (oldld. newld) Mere old Id and newld are Integer 
variables and newld Is optional If change Is wanted. 



001C 
0001 
0021 
0081 

0000 870)0043 



fSsuser set Sic define system call 

vers set 1 version number 

type set sbitn+objct 

rev set reenttl 

mod uidand.uidnaw. type, rev, uidstrt, 
lfpl 

/d0/defs/os9defs 
endc 



00022 


00 0D 


75736572 


uldnaoe 


fcs 


/userld/ 


nodule name 


00023 


0013 01 




fee 


vers 




00024 




• 










0002S 




* define stack sreas 






00026 




* 










00027 


D 0000 






org 







00028 


0000 




return 


rob 


2 


subroutine return addrs 


00029 


D 0002 




count 


rab 


2 


4 of parms passed from BASIC09 


00030 


D 0004 




olduld 


rnb 


2 


addr of 1st parm 


00031 


D 0006 




oldslz 


rab 


2 


byte count of 1st parm 


00032 


D 0008 




newuld 


rob 


2 


addr of 2nd parm 


00033 


D OOOA 




newslz 


rmb 


2 


byte count of 2nd parm 


00034 




* 










00035 


0014 


EC62 


uldstrt 


ldd 


count, s 


any parms? 


00036 


0016 


2724 




bag 


ulderr 


problem 


00037 


0018 


£C66 




ldd 


oldslz, s 


will user num fit? 


00038 


00 1A 


10830002 




cwpd 


42 


must be Integer 


00039 


001£ 261C 




bne 


ulderr 


problem 


00040 


0020 


103F0C 




os9 


fSld 


sys call for procld and userld 


00041 


0023 


10AFF804 




sty 


(olduld. s] 


out userld away 


00042 


0027 


EC62 




ldd 


count , s 


now many parms? 


00043 


0029 


5A 




decb 






00044 


002A 


270F 




beg 


uldrtn 


need only return old uld 


00045 


002C 


EC6A 




ldd 


newsiz,s 




00046 


002E 


10830002 




ovd 


42 


must be Integer 


00047 


0032 


26DB 




bne 


ulderr 




00048 


0034 


10AEP808 




ldy 


[newuld. s 


get new user nimber 


00049 


0038 


103F1C 




os9 


fSsuser 


set new user Id 


00050 


0039 


39 


uldrtn 


rts 






00051 




■ 










00052 




* parameter error return 






000S3 




• 










00054 


003C 


53 


ulderr 


comb 




set carry 


000S5 


003D C63B 




ldb 


456 


parameter err msrtoer 


00056 


003F 


39 




rts 






00057 


0040 


7B2D59 




enod 






00058 


0043 




uldend 


egu 


» 




00059 








end 







00000 error Is) 
Page 001 00u00 ^mingis) 

$0043 00067 program bytes generated 
SOOOC 00012 data bytes allocated 

EOF 



SB 

M 



rO 



FOR THOSE WB 



H NEED TO KNOW 



68 MICRO 



JOURNAL 



TW 




The "Grandfather of 
Desk Top 

Publishing" 



Rambllngs 

& 
What-not... 



^ The Editor's 

Place to Comment! 




Have you ever read something and gotten the 
feeling that you wanted to get up and spit? Well. I 
did while catching up on my reading a little earlier 
this evening. Actually yesterday evening as tt Is 
now Into the wee hours of the next day. 

First. I ran across a Tandy ad that caught my 
eye. Why? Because it repeats a myth 1 have seen 
them recite in print previously. 

"In 1977, we became the first company 10 successfully 
(italics ours) manufacture and market a personal computer - 
nobody's been in the business longer." f Tandy) 

As thousands of us know - Bull Hockey! Not so! 

While Tandy and their Radio Shack stores 
were floggin' off CB's. stereos and other non-dlgl- 
tal stuff, there were several domestic companies 
manufacturing peisonal computers (?)-whatever 
personal computer (PC) means — and successfully 
advertising and marketing them world-wide! Most 
all of us remember a few like MITS. SWIPC (still in 
there beating the bushes). Sphere, etc. Actually 
there were other brands that were manufactured 
and sold while the guys who wrote those dumb ad- 
vertising copy lines were still "tinkling" in their pin 
onst However, to sorta look halfway honest they 
slip in a more or lessword like "successfully". So to 
be "real" I guess you have to achieve a certain 
degree or level of 'successfully ". Little guys don't 
count. 

As I see tt. some are starting to puff and spout 
things like, "we were first" or "we started it all", 
klnda ballyhoo. However, if you're going to shoot 
from the hip you certainly should have some . how- 
ever slight, basts In fact. or. as ray Western friends 
would say-"diy powder and hard lead". Without 
that you're Just dumping vapor-fcucUs}". take note, 
another new word I Just invented. You can tell 
eveiyone you know you saw It here first! And 
maybe last... 



No denying Tandy has made pretty big waves 
In the micro world. They have flogged off some 
pretty neat things, computers and what-not. But 
they don't need to try to "bull" us. We appreciate 
them for what they are. not what someone else is. 
or was. 

About the PC word pait I don't know. PC was 
being used long before Tandy ever sold their first 
micro-computer. However, as to being lhe first, 
well, that's a pretty big bunch of vapor- fact(s) to be 
dtshlng out to some of us who can remember 
when— and who! A lot of folks have been In the 
business considerably longer! 

After re-reading the above comments I am 
beginning to like my new word 'vapor-fact(s)". 
Can't seem to let It go. So guess 111 let you In on 
another prime example of vapor-fact(s). 

Seems Apple, not to be outdone, also likes to 
trot out a vapor-fact(s) eveiy now and then. Ex- 
ample, a recent Apple two page advertising spread 
said. In part: 

"despite lhe acclaim we received for having created 
(italics ours) desktop publishing..." (Apple) 

Now how 'bout them beans? Apple created 
desktop publishing like Columbus discovered hot 
chocolate. M&M's and Hoola Hoops! However, it Is 
a fact. Apple sure did more than about anyone else 
In the improvement department! And that Is the 
truth of It-Apple has done more than all others 
combined to make tt a better process, but create 
tt.. .never! 

Now as most of you know, we published In 68 
Micro Journal, back In the late 70's, that we did 
and would continue to publish 68 Micro Journal 
only with the same type computers you could buy 
as a personal computer (?). and those we pub- 
lished articles about. Nothing has changed since 
then. 



26 



OcttAer'87 



'68' Micro Journal 



That being the facts. "68 Micro Journal was 
the first product of what Is known now as desktop 
publtshtng." That being not a "vapor-fact(s)". 

But wait 'whalis desktop publtshtng?'. I ask? 
Nobody here In these wee houis except Charlie. 
Buster and myself. Charlie being the typical 
poodle pays little attention to such mundane 
topics of conversation and Buster, a young but 
lazy torn cat. sleeps all the time and wouldn't hear 
a PC hit the floor if dropped from 20 feet, and 
crashed a foot from his head. So I guess I will have 
to give you the real answer, rather than have you 
ponder It to some unlikely conclusion. 

'Desktop publtshtng' Is publishing done on 

a desklopl 

Right? Right! 

Well, sorta. 

Not to be confused with publishing done on the 
floor (large, expensive hard to program machines 
that take up the better part of an average room, or 
more, and stt on the floor of course) We got one of 
'em also.That. I guess. Is floor-top publishing. Or 
maybe Just floor publishing. Doesn't sound too 
glamourous so 1 guess thats why they never called 
It anything but Just plain old 'publishing." And 
nobody seems to really caie about that claim of 
being first, unless we go back several hundred 
years. Also one wouldn't or at least shouldn't con- 
fuse desktop publishing with "deskdrawer pub- 
lishing", a word heard every now and then. That. 
I Imagine, is where you would publish with some- 
thing that slides Into a desk cubicle or drawer. 
However, that doesn't seem to qualify either. Hard 
to get man (or lady) and machine In there. 

We could really dig Into this thing, for a long 
time to come, with all sorts of claims like the first 
to do "no pencil publishing", or how about "bath- 
tub publishing?" Bet no one has thought of that 
yet. Or "one person publishing" would have been 
much better. And as we get more Into digital pub- 
lishing, that ts. direct from Input to the piess 
plates (actually coming soon), then someone will 
probably call it "digital publishing." Pretty simple, 
huh? Once you understand how to figure it. 

When we sift through the whole mess It still 
bolls down to a pretty simple solution, "desk- 
top publishing" is done on an imagi- 
nary desktop! Or to be more precise, in 
an area much, much smaller than tra- 
ditional "floor" publishing. I know that's 
too slmpliiled. however. It was an expression to 
denote the entire process cou Id be done In a space 

FOR THOSE WH 



or area so small as to be unheard of at the time 
it came Into being. Even so compacted as to get 
everything on the average desktop. Now. that was 
something to crow about. I ought to know, I was 
publishing a newspaper with traditional floor 
publishing. And I was determined that this new 
technology would fulfil) it's promise. At least for 
me. For that reason, and of course, the econom- 
ics of everything In a small size (comparative), one 
man (lady) easily manipulated system. I started 
66 Mtcro Journal. In part, to show it could be 
done. That meant designing and building the nec- 
essary hardware and writing the original soft- 
ware, because none was commercially available 
at that tlme-NONE! Whtle the technology has ad- 
vanced In qu antum leaps . In comparison, what we 
had when I started and what we have available 
now, pales in the comparison of where the first 
"Wright Flyer" was technically and the present 
day space shuttle technology. But, still the space 
shuttle has as it's roots, the Wiight Fryer. As 
concerns what we now call "desktop publishing", 
we didn't give it it's name, we Just gave it btrth. 
Others occasionally tiy to make that into some- 
thing else. Oh. well. 

All along the title or name actually should have 
been— 'electronic publishing'. That is actually 
what the difference Is. electronic as opposed to 
non-electronic or partial electronic. With a simple 
name like that nobody would want to tarnish their 
reputation by risking getting caught trying to lay 
claim to someones else's efforts. Although 1 sus- 
pect some of those other good old boys would stUl 
maybe give ft a try. 

So we. 68 MtcroJoumal. by vtrture of truth and 
proof, are acknowledged to be the first Teal " prod- 
uct of 'desktop publishing', and The fountain- 
head from which U sprang". 'Granddaddy' or 
"Father" of desktop publtshtng. to the less romantic 
of you. That and a cou pie ofbu cks will get you a cup 
of coffee In a lot of places. 

Now. let's Just sit around and see who tries to 
rip off that "fountain-head" stuff. Remember. If all 
this seems like garbage, well, did you ever hear of 
"vapor- fact(s)" before? 

Gotcha there...! 




68 MICRO 
JOURNAL 



TM 



'68' Micro Journal 



October -87 



27 



r ^ 

I 



tvjat:-wau;n 



68 MJ 




The Macintosh Section 

Reserved as a 



A place for your thoughts 
And Ours 



Mac-Watch 




ightning strikes, thunder echoes, 
Taunting music plays, the drawbridge 
creaks open, and you enter the fast- 
paced, high adventure woild of Dark 
Castle, the arcade-style game from Sili- 
con Beoch Software, 




With graphics better than most arcade 
games, you run, jump, climb, and swing 
your way through fourteen separate 
rooms, each of which offers different 
challenges: gargoyles, mutants, dragons, 
guards, bats, wizards, and fireballs, to 
name only a few. Ihe graphics are so 
intricate and smooth-flowing that the pris- 
oners being whipped by the dungeon's 
torturer turn their heads to watch as you 
pick up a mace and duel with the hench- 



man. 

The object of Dark Castle is to make your 
way through the four castle areas gather- 
ing rocks, elixir, shields, and fireballs with 
the ultimate goal of toppling the Block 
Knight. Unlike text adventures which re- 
quire you to begin at scene one and 
move progressively, Dark Castle allows 
you to choose among four doors, each 
with a wide variety of adventures. 



This is probabty the best graphics & sound 
of any Macintosh program now available 
it has to be seen to be believed! dm* 




Rom the Great Hall where each round 
begins. Door One leads to "Trouble* 
rooms 1,2, and 3. Vou go into the depttis 



28 



October's? 



'68' Micro Journal 



• telephone: (615)342-4600 Soiltfl 'East Media 


Tele*: SW60066M 


OS-9, Wii'jULX. 1 L-LX, S'K'WS 




SO'/Tl l ? A'-K% 




"■' I'U i in 1 </'• ■cifii '\iiii tifYniiititjSiistCM amt "JiiskSUc !!! 





Sculptor 



Full OEM & Dealer Discounts Available! 



THE SCUJTOR SYSTEM 



THE PACKAGE 



11 i ■ J ■ 



DATADKmONAHY 



hMfaftfeM W It* 



ITCCXINC TK>ff«QUE 

■ ktHndnb 

fnbwidhr 



REIATICWAJ OPERATORS 
EaMfM 
Lnt 



AN EST AW JSHEf) LEADER 

■ i ft iM ■ ifrl ■* IIIII W ■ Hi J Willi I M ■!*>■■ iJH i l l J Ffl 

,i IW. .1 



□ thuHM 



fit 

Facia 



Features 



SYSTEM INDEPENDENCE 






K **!*•* * I EMM* 



AFFIXATION PORTABUTV 



hitm and *4iw rtrv-fciim ^4 «t 



SPEED AND EflTCJENCY 

Scutp*ji uh* * «MI and prawn *ri 

V^ipan i tour* garwnflnrt -wauaap ■ ranptad lr> a 
c a n aa t l Wwf»«jday»tpd-'«caih iw ib i < »« T it-^*i*** 



JNTERNATIONALLV ACCEPTED 

BmUrnatW-jarc J ■» * ■■ WHy Vwl. 

■mm n #h lanpiagw a*d lanya *-)«•« T-«fLar- 
m ■nlMmiiliHia pfraaw ifcmfcfiiMHafci 



a w *** * * liinatl ■* n il i ■"uV"-Ty»«nrif n-npa 
- So*"" » atoaa-V "I ■*■* ■ 



I fcajtr* 



DATA FILE STRIJCTURE 



INPUT DATA VALUATION 



! i >■■*■ -n i ■rfudattria -inury 
■ W^ajwrw ••did to^t 

ARTTHMCTIC OPERATORS 
Umw 






spf cm features 

Echo 



Sculptor fur 68020 

OS-9 & UniFLEX 

$995 



T&ttt MMtftti)lp 



MAXIMA AND MIM* ^l* * 

iwbihiM i« tv» ..fEsiisa'*' 

P"jrWTk** PriCtVd ■WBj'l ' f\*i* AJLW LlJUl— Ll_ _JJ_L l„.__| 











/ \ 










£U 


3 **? 










jfi t?i 












mwd 


[^ 










HHfl 













t 

Iiwltr II. t 



MauffuniMMnlfart 



SCREEN FORM LANGUAGE 



PROGRAMS 

lift-In* iwi«U*v«Jiit 
i I r rMtr m irul#«Nl M* 

1 1 **i rnrHi ■mlwil ■ i ■ mw ham 

a 



I Scram 

M#nuim«pMk 



torfi ppjfrim il nUfpii 



i I * #*y hi c jJ wn |h-< -pam. *il 



* 



MUSTANG-OaO Users - Ask For Your Special Dbcouni! 



Tandy CoCo III Special - Reg. $595 * Special $389 * 





• •• 


•*• 




• 


•• 


•** 


MUSTANC-020 


$995 $199 


$595 


PC/XT/AT MSDOS 


$595 


$119 


$595 


OS/9 UniFLEX 6809 


U U 


II 


AT&T3B1 UNIX 


44 


14 


14 


IBM Compatibles 


u it 


fl 


SWTPC 68010 UniF 


$1595 


$319 


$797 


Tandy CoCo III 


Special $389.00 




SWTPC 68010 UNIX 


$1990 


$398 


$995 



... Sculptor Will Run On Over 100 Other Types of Machines ... 

... Call for Pricing ... 

!!! Please Specify Your Make of Computer and Operating System !!! 



* Full IH'vHnpcmrnl Psckxgc 
•• Run Tlmt Onlj 
••• C Ktj Rk Library 



O ■ DM. t . «K*DOS 

r-njx.o. lUTua 

CO • U» Caw ''I os-* 
ccr • caw r i 1 ^ R.EX 



l.liE 



/SO0 CassauOaSmil/i tf. rtbgon. Tn. 37343 
Ttlcphant: (61S) 842-4600 TtivQ S1O6CD6&O 



'iWKfrrtird * 




•• Shipping •• 

UI1*IUX<A B5tl 
PttrrffP «<r*a AM 5* 
Fmlfx AtaMB A4J 1«* 

Or COO. Skif*<aj o<*> 



»0»« > ■ TradHMrt «» Mhrai. «i< Waten»»'f1-D( wri UnFIJOt ^. Tr.totiMt» «fT«^t»l !>■■■■ CiMMIMB-^K'Dq* ll » Tr*JwM* iifSlii.K S«T»»rt SfilwCMT, 



88' Micro Journal 



October '87 



29 



Telephone: 1615) iS42-4t>lX) SOU tft 'EOS t !Media 



Tcfc\: 5Ith(106bM) 



OS-9, Itni'JCEX. '/C'LX, SX*®G$ 



DISASSEMBLERS 



SUPER SLEUTH from Computer Systems Consultants Interactive 
Dirastem bier; extremely POWER FUU Disk File Binai /ASCII 
Examine/Change, Absolute or FULL Disassembly. XREF 
Generator, Label "Nunc Clianger", and Filei of "Standard Label 
Names" (or different Operating Syitemi. 

Color Computer SS-50 Bus (alt wl AL. Source) 

CCO (32KRtqd) Obj. Only 149.00 

F. S, S99.00 - CCF. Obj. Only IX DO U. HOOOO 

CCF, w/Source 199 00 0, S 101 00 

CCO, Obj. Only ISO 00 

0S9 68K Obj. 1100 00 wtSourue S200O0 
DYNAMITE* - Excellent iiwdard "Batch Mode" Disassembler. 

Includet XREF Generator and "Standard Label" Files. Special OS-9 
option! w/ OS-9 Version. 

CCF. Obj. Only HOOOO ■ CCO. Obj. $ 5995 

F.S. " " il00.00O.objtcionlyiliO.00 

V. m " S30000 

PROGRAMMING LANGUAGES 

PL/9 from Windmill Micro Systems •• By Graham Trod A combination 
Editor Compiler Debugger. Direct source-to-object compUauoD 
delivering fast, compact, reentrant, ROM-able, PIC. 8 & 16-bil 
Integers A 6 digit Real numbers (or all ical-woild problems. Direct 
control over ALL System roourcea. including interrupts. 
Comprehensive libraiy support; simple Machine Code interface; 
iiep-by-itep tracer (or instant debugging. 500V page Manual with 
tutorial guide. 

F. S. CCF - H98O0 

PASC (nn> SB. Media - A FLEX9. SK*OOS Compiler wiih a definite 
Pascal "flavor". Anyone with a bit of Pascal upciience should be 
able to begin using PASC U> good effect in short order. The PASC 
package comes complete with three sample prog rams: ED (a syntax 
or structure wiitor), EDITOR (a simple, public domain, screen 
editor) and CHESS (a simple chess program). The PASC package 
come complete with source (written in PASC) and documentation. 
FLEX.SK'DOS I95JD0 

WHIMSICAL f torn SB MEDIA Now supports Real Numbers. 
"Structured Programming" WITHOUT losing the Speed and 
Control of Assembly l-anguagel Single-pass Compiler features 
unified, user -defined I/O: produces ROMable Code; Procedures and 
Modules (including pie-compiled Modules); many "Types" up to 32 
bit Integers, 6 digit Real Numbers, unlimited sized Arrays (nam 
only); Interrupt handling; long Vaiiable Names; Variable 
Initialization, Include directive; Conditional compiling; direct Code 
inscniro: control of the Stack Pointer, etc Run-Tune •ubnxaina 
inserted u called duibig compilation. Normally produces 10% less 
eodt than PU9. 

F.S and CCF -1195.00 



KANSAS CITY BASIC (ram S.E- Media -Basic far Color Computer 
OS-9 with many new ctmraands and sub-functions added. A full 
implementation of the IF-THEN-El.SE logic is included, allowing 
nesting to 255 levek. Strings are supported and • subset of the 
usual string functions such as LEFTS, RIGHTS. MIDS. STRINGS, 
etc are included. Variables are dynamically allocated. Also 
included are additional features such as Peek and Poke. A must for 
any Color Computer user running OS-9. 
CoCo 0S.9 139.95 

C Compiler from Wlndrmh Micro Systems b James McCosh. Full C 
(or FLEX. SK*DOS except bit-fields, including an Assembler. 
Requires the TSC Relocating Assembler if user desires to implement 
his own Libraries. 

F,SandCCF.S295.00 

C Compiler from IntroJ - Full C except Doubles and Bit Fields, 

streamlined for the 6809. Reliable Compiler FAST, cffkieni Code. 
More UNIX Compatible than roost. 

FLEX. SK*DOS. CCF. OS-9 (Uvet It ONLY). U - J575i» 

PASCAL Compiler from Lucldata - ISO Baaed P-Code Caspian. 
Designed especially for MiotKonpmer Systems. ADowi linkage to 
Assembler Code for maximum flexibility. 

F.S and CCF 5' - i 19000 F.S 8: J205J00 

PASCAL Compiler from OincgeSoft (now Certified Software) - For 
the PROFESSIONAL: ISO Based, Native Code Compiler. Primarily 
for Real-Time and Process Control applicaiioni. Powerful; 
Flexible. Requires a "Motorola Compatible" Relo. Asmb. and 
linking Loader. 

F. S and CCF - 1425.00 - One Year Maine. HOOOO 
OS-9 68000 Version - i900O0 

KBASIC ■ from S.D. MEDIA - A "Native Code" BASIC Compiler 
which is now Fully TSC XBASIC compatible. The compiler 
compiles to Assembly language Source Code. A NEW, 
stream! ined. Assembler is now included allowing the assembly of 
LARGE Compiled KBASIC Programs. Conditional assembly 
reduces Run-time package. 

FLEX. SK'DOS, CCF, 0S.9 Compiler /Assembler S99O0 

CRUNCH COBOL from S.E. MEDIA - Supports large subset of ANSU 
Level I COBOL with many of the useful Ixvel 2 features. Full 
FLEX.SK*DOS File Structures, including Random FUei and die 
ability to process Keyed Files. Segment and link large programs at 
runtime, or implemented at a set of overlays, Trie System requires 
56K and CAN be run with a single Disk System. A very popular 
product. 

FLEX,SK*DOS.CCF -199.95 

FORTH from Stearns El ectrooka A CoCo FORTH ^vtyamming 
language. Tailored to the CoCol Supplied on Tape, transferable to 
disk. Written in FAST ML. Many CoCo functions (Graphics. 
Sound, etc.). Includes an Editor, Trace, etc Provides CPU Cany 
Flag aaxasibilit y. Fan Task Multiplexing, Clean Interrupt 
Handling, etc for the "Pro". Excellent "Learning* tooll 
Color Computer ONLY-S58.9S 



AralkMtkyt 
O. OS-*, J. « •DOS 
F.FLEX, U.VUFUX 
CO ■ Obr CowpvUr OSt 

oct - o»tof empuur rusx 




Southeast Media 

5900 Cassandra Smtik fJL ■ Jfujcn, In. 37343 



** Shipping •• 
Add J» IAS-A.C-1". tut) 
Fortes Sartau a ad s* 
Pantrs Aim. II A 44 1 *% 
Or CUM. ShlpplatOnlr 



fm-t t»>Tr»a«Mrti l rMkfo«fi»wlMoliin>l..'FI.EX»naL'iiiri.EXsr«Traa«Mrti<itT>tlirJc»l3r«''M r.MM»ll»im ■sK'lxi'i I.. Tf»«ni»r>efat»r-K SaWwara iHwC. 



30 



October 87 



68' Micro Journal 



Tcfcpftonc: (6 1 5} $42-4*00 SOU tft %CLS t !Me (fid 



Tefaa 5106006630 



0S% Uni'JL'EX, '} L'LX, S'K''DOS 



FORTHBUILDER is a stand-alone target compter (erosscompiler) for 
producing cusiom Focih systems and application program!. 
All of the 83-slandard defining words and contiol structures are 
recognized by FORTHBUILDER. 

FORTHBUILDER is designed 10 behave as much as possible like 
a resident Foiih interpreter/ compiler, so that most of the 
established techniques for writing Forth code can be used without 
change- 
Like compilers for other languages, FORTHBUILDER can operate 
in "batch mode". 

The compiler recognizes and emulates taigcl names defined by 
CONSTANT or VARIABLE and is readily extended with 
"compile-lime" definitions to emulate specific target woids. 
FORTHBUILDER is supplied as an executable command I tie 
configured for a specific host system and target processor. Object 
code produced from the accompanying model source code is 
royalty-free to licensed users. 
F, CCF. S • $99.95 

DATABASE ACCOUNTING 

XDMS from Westchester Applied Business Systems 

FOR 6899 FLEX.SK»DOS<5/8") 

Up to 32 groups/I ields per recordl Up to 12 character tiled namel Up to 
1024 byte records! User defined screen and print contrail Process 
lilesl Form (ileal Conditional execution I Process chainingl Upward/ 
Downwaid fde linking I File joining! Random file virtual paging) 
Built in utilities! Built in text line editorl Fully session oiienledl 
Enhanced form si Boldface, Double width. Italics and Underline 
supported I Written in compact structured aatemblerl Integrated for 
FAST execution! 
XDMS-IV Data Management System 

XDMS-IV is a brand new approach to data management. It not only 

permits users todescr be, enter and retrieve data, but also to process 
entile files producing customized reports, screen displays and file 
output. Processing can consist of any of a set of standard high level 
functions including record and field selection, sorting and 
aggregation, lookups in other files, special processing of record 
subsets, cusiom report formatting, totaling and subtotaling, and 
presentation of up to three lelated files as a "database" 011 user 
defined output reports, 
POWERFUL COMMANDS! 

XDMS-IV combines the functionality of many popular DBMS software 
systems with a new easy to use command set into a single integrated 
package. We've included many new features and commands 
including a set of general fde utilities. The processing commands 
are Input-Proceas -Output (IFO>orienle which allows almost instant 
implementation of a process design. 



SESSION ORIENTED! 

XDMS-IV is session oriented. Enter "XDMS" and you are in instant 
com maud of all the features. No more waiting for a command to 
load in from disk! Many conunands are immediate, such as 
CREATE (file definition). UPDATE (file adilor), PURGE and 
DELETE (utilities). Others are process commands which arc used to 
create a user process which is executed with a RU N command. 
Either may be eniacd into a "process" file which is executed by an 
EXECUTE statement Processes may execute other processes, or 
themselves, either conditionally or unconditionally. Menus and 
screen prompts are easily coded, and entire user applications can be 
run without ever leaving XDMS-IV 

ITS EASY TO USE! 

XDMS-IV keeps data management simple I Rather than design a complex 
DBMS which hides the uue nature of the data, we kept XDMS-IV 
file oriented. The user view of data relationships is ptesented in 
reports and screen output, while the actual data resides in easy to 
maintain files. This aspect pcimits customized presentation and 
■epoiU without complex redefinition of the database files and 
structure. XDMS-IV may be used for a wide range of applications 
from simple record management systems (addresses, inventoiy ...) 
to integrated database systems (order entry, accounting...) 

The possibilities are unlimited 
FOR 6809 FLEX-SK»DOS(5/8") $249.95 



ASSEMBLERS 

ASTRUK09 from S.E. Media - A "Structured Assembler for the 6809" 
which requires the TSC Macro Assembler. 
F. S. CCF - $99 95 
Macro Assembler Tor TSC - Ihe FLEX, SK'DOS STANDARD 
Assembler. 

Special - CCF SHOO; F.S $50 DO 
OSM Extended 6809 Macro Assembler from Lloyd I/O. - Provides local 
labels, Motorola S-records, and Intel Hex records; XREF. 
GeneOrate OS-9 Memory modules under FLEX, SK'DOS. 
FLEX. SK'DOS. CCF. OS-9 199.00 
Relocating Assembler/Linking Loader from TSC. -- Use with many of 
the C and Pascal Compilers. 
F. S. CCF $150.00 
MACE, by Graham Troll from Windrush Micro Systems - Co-Resident 
Editor and Assembler; fast interactive A.U Programming for small 
to medium-sized Programs. 
F.S. CCF- $75 M 
XMACE - MACE w/Cross Assembler for 680071/2/3/8 
F.S. CCF- $9800 



.MillablllLj I »t«ndi 

o.os.r. s.sooos 

F>n.IX,U>UBIFI.EX 

CC» - Color Gonipiiltr 054 
CCF. Color Computer FLEX 



South 'East 'Media 

5900 Cassandra Smith 9/. - Dfvffon, Tn. 37343 



•• Shipping •• 

AddJ» USA.(mio.IlM) 
Fortlea SurfKr AM S* 
Fortlcn Al<n»ll Add 1<« 
Or CO.D. Shipping Onlj 



*OS-*l»»Tn8>Ti«r1inrMkr"»ir ( indMni"fMtj.»n.EX 'nil thin. EX »rr Tr»dmurttnrTtchfilt»l Spuria CaaaiU»iru.*SIC' DOS lnfnd.rn.rt of sur K Sarlwiri S.K.rml'nrp. 



'68' Micro Journal 



Odober"87 



31 



Tcfcphonc: (615) 842-4600 SOU tft 'EClS t Media 



TeklC. 5106006630 



OS-9, Wri'JVEX, ') L'LX, SX*4>QS 



UTILITIES 

BaskW XRef from S.E, Media - Thi» BtiicOT Crow Reference Utility 
ii a Dui<09 Piogrtm which will produce a "pretty piinled" lilting 
with each line numbeicd, followed by a complete cro» referenced 
lilting of all variables, external procedure*, and line rajmbcn called 
Alio includei a Program Liu Utility which ournuu a fan "pretty 
printed" lilting with line number*. Require* B*iic09 or RunB. 
O A CCO obj. only ■■ $39.95: W Source ■ $79.95 

HTrec Routine! • Complete act of routine* to allow limple 

implement* lion of keyed file* • for your programs - running under 
Ba*ic09. A ical lime »aver and should be a pari of eveiy sellout 
programmer* tool -box. 

A CCO obj. only ■ $89.95 

Lucldata PASCAL UTILITIES (Require* Pascal ver 3) 

XREF •• produce a Cros* Reference Lilting of any tut; otienied to 
Pascal Source. 

INCLUDE - Include other Files in a Source Text, including Binaty - 
unlimited nesting. 

PROFILER - prov idea an Indented. Numbered. "Suuoog ram' of a 
Pascal Source Text Flic; view the overall structure of luge 
programs, program integrity, etc Supplied in Pascal Source Code; 
requires compilation. 

F. S. CCF .« EACH 5" - $40 M. 8' - ISO DO 

DUB from S.E. Media - A UnlFLEX BASIC Decompiler Re-Creaie a 
Sourtr Lining from UniR£X Compiled baiic Program*. Works 
w/ AU. Versions of 6809 UniFLEX baric. 
U - $219.95 

LOW COST PROGRAM KITS from Southeast Media The following 
till are available for FLEX, SK*OOS on either S" or 8" Disk. 

1. BASIC TOOL-CHEST $29.95 
BUSTER. CMD: pretty printer 
LINEXREF.BAS: line crots-referencer 
REMPAC.BAS. SPCPACBAS. COMPACBAS: 
remove *uperfluou* code 

STRIP BAS: auperlluous line numbers stripper 

2. FLEX, SK»DOS UTILITIES KIT $39.99 
CATS. CMD: alphabetically-sotted directory listing 
CATD.CMD: dale-tonad diiectoty lilting 
COPYSORT.CMD: file copy, alphabetically 
COPYDATE.CMD: file copy, by date-order 
F1LEDATE.CMD: change file creation date 

bNFO.CMD (A INFOGMX.CMD): tells disk attribute* Acontenls 

RELINK.CMD (A RELINK82): rc-ordcr* fragmenta) free 

chain 

RESQ.CMD: undeletes (recover*) a deleted file 

SECIORS.CMD. show leaor order in free chain 

XL.CMD: super text lister 



3. ASSEMBLERS/DISASSEMBLERS UTILITIES 

$39.95 
UNEFEED.CMD: 'modulaiise' disassembler output 
MATII.CMD: decimal, hex, binaty, octal conversions 
A uble* 
SKIP.CMD: column suipper 

4. WORD - PROCESSOR SUPPORT UTILITIES 

$49.95 
FULLSIOP.CMD: checks for capiialization 
BSTYCIT.BAS (.BAC): Stylo to dot-matrix prinlerr 
NECPRINT.CMD: Stylo to dot-matrix prinler riltercode 

5. UTILITIES FOR INDEXING $49.95 
MENU.BAS: selects required program from list below 
INDEX.BAC: word index 

PHRASES. BAC: phraie index 
CONTENT.BAC: table of conlenti 
1NDXSORT.BAC: rati alphibetic son routine 
FORMATERBAC: produce* a 2 column formatted index 
APPEND.BAC: append any number of fiki 
CHAR BIN: line reaAr 

BASIC09 TOOLS consist of 21 subrcuinu forBasic09. 
6 were written in C Language and the remainder in alterably. 
All the routine* are compiled down to native machine code which 
make* them fast and compact. 

1. CFILL - fill* a tiling with diaraaeri 

2. DPEEK •• Double peek 

3. DPOKE - Double poke 

4. FPOS - Qirreni file position 

5. FSIZE - File size 

6. FTRIM - remove* leading space* from a siting 

7. CETPR — returns the current process ID 

8. GETOPT - geu 32 byte option taction 

9. GETUSR -- geu the u*er ID 

10. CTIME •• gets the time 

11. INSERT •• insert a string into another 

12. LOWER - convert! a string into lowercase 

13. READY - Checks for available input 

14. SETPRIOR -- changes a process priority 

15. SETUSR - change* the user ID 

16. SETOPr - act 32 byle option packet 

17. STIME - sell the lime 

18. SPACE - adds space* to a string 

19. SWAP - swap* any two variables 
2a SYSCALL - system call 

21. UPPER — convert* a tiring to uppercase 

For OS 9 - $44.95 - Include* Source Code 

See Review in January 1987 ittue of 68 Micro Journal 



o • os.*, s • sx>ooi 
r.FLEX.U.UalFLU 
CCt . CM* Omftrr OS.* 
tXT • Cokjr Canpvk* rut X 

•Of.* h aTnnkm.ni »fMkn 



South Tost Media 

5SO0 Cassandra. Smith %£. - yfvfsan, Tn. i 7343 




*• Shipping •• 

KM I* USA. (rain. JUS) 
ForitXB Surfm Adas* 
ForrftJi AJrm.lt Ao» 11* 
Or CO.D. Shtppltt* Oalj 



I M.ttn™i».n-T>:x .ml Ininn >r< T>.d.m.r> < »tT»c>Hilf.lSriuiin OniiilUtiito-'SK'POS InTrnUmrtiif Sur -K S.Hwir« Si+mir<*t. 



32 



October '87 



'66' Micro Journal 



Telephone: (til?) $42-4600 SOU tft ILOS t tMeditl 



Tele*;: 510bOObbM) 



05-9, Uni'JL'EX, 'J LLX, $'K*'DQS 



SOFTOOLS 

Hie following programs ire included in object form for immediate 
application. PL/9 aource code available for cuncmization. 

READ-ME Complete innrmjoni for initial letup and operation. Can 

even be piinied out with the included tut processor. 
CONFIG one lime system configuration. 

CHANGE changes words, characters, etc. globally to any text type file. 
CLEANTXT converts tal files to standard FLEX, SK'DOS files. 
COMMON compile two text flics and icports differences. 
COMPARE another check file that reports mis-matched lines. 
CONCAT similar to FLEX. SK'DOS append but can alto list Hies to 

screen. 
DOCUMENT for PIJ9 source files. Veiy useful in examining parameter 

passing aspects of procedures. 
ECHO cchos to either screen or file. 
FIND an improve find command with "pastern" matching and wildcards, 

Veiy useful. 
HEX dumps files in both hex and ASCII. 
INCLUDE a file copy program that will accept "includes" of other disk 

Filet. 
KWIC allows totaling each word, on each line to the beginning. Very 

useful in a sort program, etc. 
L1STDIR a dircctoiy listing program. Not super, but better than CAT. 
MEMSORT a high-speed text file sorter. Up to 10 fields may be sotted. 

Very fast. Veiy useful. 
MULTICOL width of page, number of columns may be specilied. A 

MUST! 
PAGE similar to LIST bin allows for a page header, page width and 

depth. Adjust for CRT screen or ptinier as set up by CONFIG. A 

veiy smart print driver. Allows pi inter control commands. 
REMOVE a fast file deleter. Careful, no prompts issued. Zap, and its 

gonel 
SCREEN a screen listing utility. Word wraps text to lit screen. Screen 

depth may be altered at run time. 
SORT a super version of MEMSORT. Ascending/descending order, up 

to 10 keys, case over-tide, sort on nth woid and sort on characters if 

flic is small enough, sorb in RAM, If large file, son is constrained 

to size of your largest disk capacity. 
TPROC a email but nice text formatter. This is a complete formatter and 

has f unci ons not found in other formatters. 
TRANSLIT sons a file by x keyfields. Checks for duplications. Up to 

10 key files may be used. 
UNROTATE used with KWIC this ptogram reads an input Tile and 

unlolds it a tine at a time. If the file has been sorted each word will 

be presented in sequence. 
WC a woid count utility. Cut count woids, characters or lines. 

NOTE: Ibis set of utilities consists of 6 5-1/4" disks or 2 8" disks, w/ 
source (PL?). 3 5-1/4" disks or 1 8" disk w/o source. 
Complete set SPECIAL INTRO PRICE: 

5-1/4" w/souice FLEX - SK'DOS • $129.95 

w/o source - S79.95 

8" w/sourct - $79.95 - w/o source $49.95 



FULL SCREEN FORMS DISPLAY from Computer Systems 

Consultants •- TSC Extended BASIC program supports any Serial 
Terminal with Cursor Control or Memory-Mapped Video Displays: 
substantially extends the capabilities of the Program Designer by 
providing a lable-dtiven method of describing and using Full Screen 
Displays. 

F, S and CCF, U ■ 17500, wi Source ■ 15000 

SOLVE from S.E. Media - OS-9 levels I and U only. A Symbolic 
Object/Logic Verification & Examine debugger. Including inline 
debugging, disassanble and assemble. SOLVE IS THE MOST 
COMPLETE DEBUGGER we have seen for the 6809 OS-9 series 1 
SOLVE does it all! With a tich selection of monitor, assembler, 
disassembler, environmental, execution and other miscellaneous 
commands, SOLVE is the MOST POWERFVJ L toolkit item you 
can own 1 Yet, SOLVE is simple to use! With complete 
documentation, a snapl Evetyone who has ordend this package has 
ravcdl See review • 68 Micro Journal • December 1985. No 'blind' 
debugging here, full semen displays, rich and complete in 
information prcscnud. Since review in 68 Micro Journal, this is our 
fastest mover! 

Levels / A II only - OS-9 S69.9S 



DISK UTILITIES 

OS-9 VDIsk from S.E. Media - For Level I only. Use the Emended 
Memoty capability of your SWTPC or Gimix CPU card (or similar 
format DAI) for FAST Program Compiles, CMD execution, high 
speed inter-process communications (without pipe buffers), etc. - 
SAVE that System Memoty. Virtual Disk size is variable in 4K 
incrcOments up to 960K. Some Assembly Required. 
Lew// OS-9obj.S79.95;wtSourc» J/49.95 

O-F from S.E Media - Written in BASIC09 (with Source), includes: 
REFORMAT, ■ BASIC09 Ptogram that lcformals a chosen amount 
of an OS-9 disk to FLEX. SK*DOS Format so it can be used 
noimaily by FLEX, SK'DOS; and FLEX, a BASIC09 Ptogram that 
does the actual read or write function lo the special O-F Transfer 
Disk: user-friendly menu dr ven. Read the FLEX, SK*DOS 
Dircctoiy. Delete FLEX. SK'DOS Files, Copy both directions, etc. 
FLEX, SK'DOS users use the special disk just like any other FLEX. 
SK'DOS disk 

O . 6809/68000 S79.95 

LSORT from S.E. Media - A SORT/MERGE package for OS-9 (Level I 
A H only). Sorts tecoids with fixed lengths or variable lengths. 
Allows for either ascending or descending son. Sotting can be done 
in either ASCII sequence or alternate collating sequence. Right, left 
or no justification of data fields available. LSORT includes a full 
set of comments and errors messages. 
OS-9 J8S.0O 



AnlbMft) L<tna> 
O. 03AS.SK -DOS 

r . ntx, u . imsto 

CCI ■ 0*» Conrutrr OS-» 
CO» • Color Contwur FUCK 




South Tost Media 

5900 Cassaiuim Smith "H- • Jfaifon. In. 37343 



•• Shipping •• 
Add i* itsj*. (aua. *».»»> 
Fwilm Swrioa Ada 5* 
Forties Alrs.ll Add 10* 
Or C.O.D. fihlpplne Only 



*ra.«liiTrmdfm»rHirMlcr[CTrt ind vliiiwoli.tl.tX ind UnlFlE*. trt Tri or mi r > I nt Tteb nttil Syru im Cnimilti n ii . -S K *1XK li ■ T ra drn». r » of S a r ■ K Snrtin n Susans Corp. 



'68' MtCrO Journal 



October's? 



33 



Tekphom- : (M 5) $424600 Sotltfl TLOS t Media 



TefeK; 5108006630 



OS l l ilni'JULX, 'JOEX.S-JC'VOS 



HIER from S.E. Media -HIER is a modem hierarchal storage system for 
users under Fl£X. SK*OOS. It answers the needi of those who 
have hard disk capabilities on ihcir lyitemi, or many files on one 
disk -a ysin. Using HIER * regular (an?) FLEX, SK'DOS 
disk (8 - 5 - hard disk) cm have sub directories. By this method 
the problems of assigning unique Rimes to files is less burdensome. 
Different riles with the eucj same name may be on the same disk, 
as long as they are in different directories. For the wuxiesirr user 
this becomes a must. Sub-directories are the modem day solution 
that all current laige systems use. Each directory looks to FLEX, 
SK*DOS like a regular file, except they have the extension 
'.DIR'. A full set of directory handling programs arc included, 
makingthe operation of HIER simple and straightforward A 
special install package ia included to install HIER to your partial ar 
version of FLEX, SK'DOS. Some assembly required- Install 
indicates each byte or reference: change needed. Typica ly - 6 byte 
changes in source (furnished) and one assembly of HIER is all that 
is required. No programming required! 
Ft£X - SK'OOS $79.95 

COPYMULT from S.E. Media - Copy LARGE Disks to several 

smaller disks, FI£X. SK'DOS utilities allow tlie backup of ANY 
size dirk to any SMALLER size diskettes (Haid Disk to floppies, 8" 
to S", etc.) by simply insening diskettes as requested by 
COPYMULT. No fouling with directory deletions, etc. 
COPYMULT.CMD tinders lands norma) "copy" synux and keeps up 
with fries copied by maintaining directories for both host and 
receiving disk system. Also includes BACKUP.CMD to download 
any size "random" type lilc: RES1DRE.CMD to restructure copied 
"random" files for copying, or recopying back to the host system; 
and FREELINK.CMD as a "bonus" utility that "relinks" the free 
chain of floppy or hard disk, eliminating fragmentation. 

Completely documented Assembly long uage Source files included . 
ALL 4 Programs (FLEX, SK'OOS, S" or S") S99.S0 

COPYCAT from Lucidata •- Postal NOT required. Allows reading 

TSC Mini-FLEX. SK'DOS. SSB DOS68, and Digital Research CP/ 
M Disks while operating under SK*DOS . FI.EX l.O, FLEX 2.0. or 
FLEX 9.0 with 6800 or 6809 Systems. COPYCAT will not 
perform miracles, but, between the program and the manual, you 
stand a good chance of accomplishing a transfer. Also includes 
some Utilities to help out. Programs supplied in Modular Source 
Code (Assembly Language) to help solve unusual problems. 
F.SondCCFS'-SXDO F.S 8 m -S65D0 

VIRTUAL TERMINAL from S.E. Madia ■ Allows one terminal to do 
rile work of several. The user may start as many as eight task on one 
terminal, under VIRTUALTERMINAL and switch back and forth 
between task at will. No need to exit each one; just jump back and 
forth. Complete with configuration program. 1 he best way to keep 
up with those background programs. 
O 4 CCO - obj. only - $49.95 



FLEX, SK*DOS DISK UTILITIES from Computer Systems 

Consultants — Eight (8) different Assembly Language (w/ Source 
Code) FLEX, SK'DOS Utilities for every FLEX. SK'DOS Users 
Toolbox: Copy a File wilh CRC Errors; Test Disk for errors; 
Compare two Disks; a fast Disk Backup Program; Edit Disk 
Sectors; Linearize Free-drain on the Disk; ptint Disk Identification ; 
and Sort and Replace the Disk Directory (in sorted order). •• PLUS 
— Ten XBASIC Programs including: A BASIC Resequencer wilh 
EX1R As over "RENUM" like check for missing label definitions. 
processes Disk to Disk instead of in Memoiy, etc. Other programs 
Compare, Merge, or Generate Updates between two BASIC 
Programs, check BASIC Sequence Numbers, compare two 
uniequenced files, and 5 Programs for establishing a Master 
Directory of several Disks, and toning, selecting, updating, and 
printing paginated listings of these files. A BASIC Cross-Rcferencc 
Program, wrinen in Assembly Language, which provides an X-Ref 
Listing of ihe Variables and Reserved Words in TSC BASIC, 
XBASIC. and PRECOMPILER BASIC Programs. 

ALL Utilities include Source* (either BASIC or AL. Source Code). 
F.SandCCF -S50 00 
BASIC Utilities ONLY for UniFl£X - S30D0 

COMMUNICATIONS 

CMODEM TelsKcrnrn unications Program from Computer Systems 

Consultants. I c. — Menu-Diiven; strpponj Dumb- Terminal Mode, 
Upload and Download in non ■protocol mode, and the CP/M 
"Modem?" Qirislensen protocol mode to enable communication 
capabilities for almost any requirement Written in "C*. 

FLEX, SK'DOS. CCF. OS-9. UniFLEX, 68000 & 69091, 
Source 1700.00 • without Source tSOOO 

X-TALK from S.E. Media - X-TALK consists of two disks and a special 
cable, the hookup enables a 6809 SWTPC computer uj dump 
UniFLEX files directly to the UniFLEX MUSTANG-020. This is 
■he ONLY currently available method to transfer SWTPC 6809 
UniFLEX files to a 68000 UniFLEX system. Grmix 6809 users 
may dump a 6809 UniFl£X file to a 6809 UniFLEX live inch disk 
and it is readable by ihe MUSTANG-020. The cable is specially 
prepared wilh internal connections to match the non-standard 
SWTPC SO/9 I/O Db25 connectors. A special SWITC S+ cable set 
is also available. Users should specify which SWTPC system he/ 
slie wishes to communicate wilh the MUSTANG-020. The X- 
TALK software is furnished on two disks. One eight inch disk 
contains S.E. Media modem program C-MODEM (6809) and the 
oilier disk is a MUSTANG 020 five inch disk wilh C MODEM 
(68020) Text and binary liles may be directly transfeued between 
ihe two systems. The C MODEM programs are unalteiad and 
perform as excellent modem programs also. X-TALK can be 
purchased wilh or without the special cables, but this special prt.ee is 
available to registered MUSTANG-020 users only. 

X TALK Complete (cable, 2 disks) 199.9$ 

X-TALK Software (2 disks only) S69.9S 

X-TALK with CMODEM Source SH9.9S 



a . o*.t, s . sn >dos 
r.nxx. L-.uninut 
CC*.&kwGi>B»«ur os.» 

CO. Color tefakftUI 




South ( Last 'Media 

5900 Cassandra Smith K£. ■ Xvrfon, Tn. 37343 



mastercard 




•• Shipping " 
A«s 1* Uijt.laUn. 11,9*} 
Fonts* SWrsa AM i % 
K«tCpi AtnosS AM to* 
Or CO Js. Skl»r»ec Out) 



1K.1I..Trnljniir>of Mkra-.r.in< MolD.^«>.TI.rX'iMltI»l>1.i:X irt TroSHMffc I «f TjrlllOt »l ■jplMulormilmm.'MCnO'i 1. iTnSmort of SU r.K Soflnort in«wC»> 



34 



October '87 



'68' Micro Journal 



TcU'pfumc: (6 1 s) 842 -4bOo Sou tft < Eos t <Media 



'Teh*: 5lQbO%630 



OS-9. •Uni'JL'LX, f&£X,S%*®QS 



XDATA from S.B. Media - A COMMUNICATION Package for the 
UniFLEX Operating' System. Use with CP/M. Mam Frames, other 
UniFI.EX Systems, etc Veiilict Transmission using chetisum or 
CRC; Re-Transmilr b*d blocki. etc 
U ■ S299.99 

EDITORS & WORD PROCESSING 



JUST from SB. Media — Text Formatter developed by Ron Anderson; 
for Dot Mum Printer*, provide! many unique feature!. Oitpui 
"Formatted'' Text to the Diiplay. Uie the FPRINT.CMD supplied 
for producing multiple copies of the "Formatted" Text on the Printer 
INCLUDING IMBEDDED PRINTER COMMANDS (veiy useful 
at other limes alio, and worth the price of the program by itself) 
"User Configurable* for adapting to other Printer! (comet let up for 
Epson MX ■80wiihGraflrax);uploten(10)irnbedded "Printer 
Control Cotmnandi". Compensate! for a "Double Width" printed 
line. Include! the nonnal line width, margin, iodou, para graph, 
apace, vertical skip lines, page length, page numbcting, centering, 
fill, justification, etc Use with PAT or any other editor. 

* Now supplied as a two disk set: 

Disk*l; JUSU.CMD object file. 

JUS12TXT PL9 source FLEX. SK'DOS - CC 

Disk »2: JUSTSC object and source in C: 

FLSX.SICDOS.OS9.ee 

The JTSC and tegular JUST C source are two separate program!. JTSC 
compile! to a version that est peas TSC Word Processor type 
commands, (pp .sp .ce etc.) Great for your older text Files. The C 
source compiles to a standard syntax JUST.CMD object file. Using 
JUST tyntax if ,u ,y etc) With all JUST functions plus several 
additional printer formatting functions. Reference the JUSTSC C 
source. For thotc wanling an excellent BUDGET PRICED woid 
processor, with features none of the other* have. Tliii is it! 

Ditk (1) ■ Pl.9 FLEX only. F.Si CCF J49.95 
Disk Set (2) F.SA CCF A OS9 (C version) - S69.95 
OS-9 6SK000 complete wilh Source . 179 95 

PAT from S.E. Media • A full feature screen oriented TEXT EDITOR 
with all the ben of "PIE 1 "". For those who iwore by and loved only 
Pll;, this is for you! All PIE feature! and much more I Too many 
feature! to list. And if you don't like these, change or add your own. 
PL-9 source furnished. "C source available soon. Easily 
conf gured to yonr CRT, wilh special config section. 
Regular FLEX. SK'DOS 1129 50 
• SPECIAL INTRODUCnOS OFFER ' 179.95 
SPECIAL PATlJVST COMBO iwl source) 

FLEX. SK'DOS 199.95 
OS-9 6SK Version 1229.00 
SPECIAL PATlJVST COMBO 6SK S249M 
Notes JUST in *C~ source available for OS-9 



CEDRIC from S.E. Media • A screen oriented TEXT EDITOR with 
availability of "MENU" aid. Macro defiruliom. configurable 
'permanent definable MACROS' • all standaid features and the 
fastest 'global' functions in lhe west. A simple, automatic terminal 
config program makes lhis a real no hassel' product. Only 6K in 
size, leaving the average system over 16S sectors for text buffer - 
appx. 14.000 plus off we memory! Extra fine for programming as 
well as text 

FLEX, SK'DOS 169.95 

BAS-EDIT from S.E. Media - A TSC BASIC or XBASIC screen editor. 
Appended to BASIC or XBASIC, BAS-EDIT is transparent to 
normal BASIC/XBASIC operation. Allows editing while in 
BASIC/XBASIC. Supports the following functions: OVERLAY, 
INSERT and DUP LINE Make editing BASIC/XBASIC piograms 
SIMPLEI A GREAT time and effort saver. Programmers love it! 
NO more retyping entires lines, etc. Complete with over 25 
different CRT terminal configuration ovcilays. 
FLEX, CCF. SK'DOS S19.95 

SCREDrrOR 111 from Windrush Micro Systems - Powerful Screen- 
Oriented Editor/Word Processor. Almost SO different txaranands; 
over 300 pages of Documentation wilh Tutorial. Features Multi- 
Cohonn display and editing, "decimal align* columns (AND add 
them up automatically), multiple keystroke macros, even/ odd page 
headers and footers, imbedded printer control codes, all 
justifications, "help" support, store cemm on command series on 
ditk, etc Use supplied "set-ups", or remap the keyboard to your 
needs. Except for proportional pi inting, this package will DO IT 
ALU 

6800 or 6809 FLEX, SK'DOS or SSB DOS, OS-9 . 1175 00 

SPELLB "Computer Dictionary" from S.E. Media - OVER 150,000 

words! Lock up a word from within your Editor or Word Processor 
(with the SPHCMD Utility which operates in the FLEX. SK'DOS 
UCS). Or check and update the Text after enu y, ADD WORDS to 
the Di< lioniry. "Rag" questionable woidi in the Text, "View a word 
in context" before changing or ignoring, etc. SPELLB first checks a 
"Common Word Dictionary", then the normal Dictionary, then a 
"Personal Word Lilt", and finally, any "Special Word Lin" you may 
have specified. SPELLB also allows the use of Small Diik Storage 
systems. 

F, Sand CCF .1129.95 

STYLO-GRAPH from Great Plains Computer Co. - A full-screen 

oriented WORD PROCESSOR - (utes the 51 x 24 Display Screens 
on CoCo FLEX/SK'DOS. or PBJ Wordpak). Full screen display 
and editing; supports the Daisy Wheel proportional printers. 
NEW PRICES 6809 CCF and CCO ■ J99.95. 
F.Sor 0- 1179. 95. U 1299 95 



Araiuainir Urr~»> 

II.I1V-. <!.\K'tK»i 

r . rLt.x, V . ruin rx 
Cd . CeX» Oxnauur OS.* 
00> . Color Cos-vltr "V*X 




South "East Media 

S900 Cassandra SmilA !k% ■ "Xbifon, In. 37343 




" Shipping •• 

Add J» USA. tats. IZ.St) 
Fwtlr* SwtM» Add)* 
Forties Ablest! Add 10* 
Or CO.O. SblpolaK Onlr 



1 is.« I. . 1 r.d.m..t (il Mkrn— r« ond Mnlnrat*- ft. T. X and tli.in.Elt »rt Twdnmrln otTKlnilol Sfllt HM OMmlmm-'S K ' DOS l« ■ I ridtra rk ,J sr»p-K Sanwin SfiminCorp. 



68' Micro Journal 



CXiufjer B7 



35 



Telephone: (61 5} 842-4600 SoUtft f EOS t 9^C ctia 



TcIck: 5106LV663Q 



QS-9, -Uni'JL'LX, 'JCLX, S'K*'lh\< 



STYLO.SPELL from Great Pbini Computer Co. - Fix Computer 
Dictionary. Complements Stylograpli. 

NEW PRICES 6809 CCF and CCO - S69 95. 

F. S or - S99.95. V . S 149.95 
STYLO-MERGE from Gteat P tins Compuier Ca. - Merge Milling 
List to "Form" Letters. Piini multiple File*, etc, through Stylo. 

NEW PRICES 6809 CCF and CCO . S59.95. 

F.SorOS79SS.U-S129.95 
STYLO-PA K - Gnfto * Spel) * Merge Packige Deallll 

F.SorO ■ 1329.95. U ■ S549 9S 

0. 68000 1695.00 



MISCELLANEOUS 

TABULA RASA SPREADSHEET from Compiler Systems 

Consultants - TABULA RASA is similar lo DESKTOP/PLAN; 
piovidet use of libulir compuuiion schemes used for imlysis of 
business, ules, and economic conditions. Maiu-driven; extensive 
report -gene rui on edibilities. Requires TSCs Extended BASIC. 
F.Sand CCF. U - SSOOO. wr Source - SI00.00 

DYN ACALC - Electronic Spread Sheet for the 6809 Bid 68000. 
F. S. OS-9 and SPECIAL CCF ■ S200.00. V . $395.00 
OS-9 68K.S595W 

FULL SCREEN INVENTORY/MRP from Computer Systems 
Consultants - Vte the Full Screen Inventory Systcm/Milcriili 
Requirement PUnnin g for maintaining inventories. Keep* iiem field 
file in alphabetical order for eaaier inquiiy. Locite ind/or print 
records matching partial of complete item, description, vendor, or 
attributes: find backorder or below stock levels. Pt int-outi in item 
or vendor order. MRP capability for the maintenance ind imlysis 
of Kierarchicsl usemblies of items in the inventoiy file. Requires 
TSCs Extended BASIC. 

F.Sand CCF. U -SSOOO. wi Sourer . S 100. 00 

FULLSCREEN MAILING LIST from Compuier Systems Consuhanu 
- The Full Screen Milling List System provides i mean of 
miinuining simple milling lists. Loose ill records mitching on 
partial or complete name, city, sutc, zip, or attributes for Listings or 
Libels, etc. Requires TSCs Extended BASIC. 

F, S and CCF, V . SSOOO. w/ Sourer - 1 100 00 

DIET-TRAC Forecaster from S.E. Media - An XBASIC program thai 
plans 1 diet in term s of either catono and percentage of 
carbohy dratea . proteina and fits <C P G%) or grams of 
Cirbohydrale. Protein and Fit food exchanges of eich of Ihe six 
basic food group* (vegetable, bread, meal, skim milk, fruit and fat) 
for a specific individual. Sex. Age, Height, Present Weight, Frame 
Size, Activity Level and Basal Metabolic Rite for normil individua 
are taken into account. Ideal weight and sustaining calories for any 
weight of Ihe above individual are calculated Provides number of 
days and daily calendar after weight goal and calorie plan is 
determined. 

F.S -159.95, U S89.95 



CROSS ASSEMBLERS 



TRUE CROSS ASSEMBLERS from Compiler Systems Coniulunts - 
Supports 1 80275. Z-80. 6800/1/2/1/8/1 1/HC1 1. 6804. 6805/HCCS/ 
146805. 6809/00/01. 6502 fami y. 6080/5, 6020/1/2/3 5/C35/39/ 40/ 
48/C48/49/C49/50/B748/49, 8031/51/8751. ind 68000 Systems. 
Assembler and Listing foimits same is target CPU's form it 
Produces midline independent Motoroli S-Text 
6*000 or 6809. FLEX. SK'DOS. CCF. OS.9. UniFLEX 
any objtel or source each - S5000 
any 3 objtel or soura tach - S 100.00 
Set of ALL obftd S20000 - wtsourte SS00M 

XASM Cross Assemblers for FLEX. SK'OOS from S.E. MEDIA - 
This set of 6800/1 /2/3/S/8. 6301. 6502. 6080/5. and ZS0 Cross 
Assemblers uses the familiar TSC Macro Assembler Command Line 
and Source Code formal. Assembler options, etc. in providing code 
for the target CPU's. 

Confine set. FLEX. SK'DOS only - S150J0O 

CRASMB from LLOYD I/O - Supports Motors a's, Intel's, Zilog's. and 
other's CPU syntax for these 8-Bit micropnxxxso rs; 6800, 6801, 
6303. 6804. 6805, 6809. 6811 (all varieties): 6502. 1802/5. 8048 
family. 8051 family. 8080/85. Z8. Z80. and TMS-7000 family. 
Has MACROS. Local Labels. Label X-REF. Label Lengt to 30 
Ours. Object code formats: Moioroii S-Records (text). Intel HEX- 
Recoids <tcxt).OS9 (binary), and FLEX. SK'OOS (binary). 
Written in Assembler ... eg. Very FaiL 

CPU TYPE - Price each: 



For MOrOROLA 
F1.EX9 $150 

SK'DOS $150 
OS9AS809 $150 

OS9/68K 

CRASMB 16.32 from LLOYD DO 



INTEL 

$150 
$150 
$150 



OTHER COMPLETE SET 
$150 $399 

5150 5399 

$150 $399 

$432 
• Support! Motorola's 68000. and 
has same features as the 8 bit version. OS9/68K. Object code 
Format illows this cross assembler to be used in developing your 
programs for OS9/68K on your OS9/6809 com user. 
FLEX. SK*DOS. CCF. OS-9/6809 S249.00 

GAMES 

RAPIER -6809 Chest Program from S.E. Media -Requires FLEX, 
SK'DOS and Displays on Any Type Terminal. Futures: Four 
levels of play. Swap side. Point scoring system. Two display 
boards. Change •kill level. Solve Checkmate problems in 1-2-3-4 
moves. Make move and swap sides. Play white or black. This is 
on* of the strongest CHESS programs running on any 
mlcrocom puter. estimated USCF Rating 1600* (belter than most 
'club' players at higher levels) 
F.S and CCF .S79.95 



AMliablllirUtmai 
u.iis.t, < .sk-mis 

r.r\.t\.v-Vnsn.tx 

CO.Qter r- il l lhr OS* 

ccr.c. 



■«« 



South 'Last 'Media 

SSO0 Cassandra Smith 7JL • Mbrscm, Tn. 37343 




•• Shipping •• 

A Id 1* I VI m!n liJII 
Fontffl So/no AM 9* 
*W*%p Alnmll Ala It* 
Or to jx surfs o«ij 



•n.EX 9*4 l."uin.FX ar« TnltmarlK of TvcMcif 



test 



Ouunutt.*!*:* doc 



aiaTnil«w.rlrfSI*r.*:Spft»T« Syariyi Ct**. 



36 



C3ctuber'87 



*66" Micro Journal 



'Dajk.Castits 

of the castle in quest of a key, fighting 
bats, rats, armed guards, and whip crock- 
ing henchmen along the way. If you get 
the key, you then make your way back out 
through the three rooms. Door Two leads 
to the four .rooms of the 'Fireball* area. 
You battle mutants and vultures, jump on 
floating rocks, raft down an underground 
liver, then finally climb masonry in an at- 
tempt to reach the wizard and gain con- 
trol of the fireballs, Through Door Four's 
"Shield" area, henchmen throw rocks, 
and dragons breathe fire. If you survive 
the four rooms, you acquire the Shield and 
are zapped back to the Great Hall. Door 
Three's targe doors lead you to the Block 
Knight area of the caslle with the three 
most challenging rooms. The maze like 
rope ladders, floating skeletons, and flying 
gargoyles are all obstacles which stand in 
Ihe way af toppling the block knight, who 
hurts his empty ale tankards at you as you 
try to pull the ring which will unseat Nm. 

You move your realistic 'warrior" through 
the castle by using the keyboard with your 
left hand: a = left, d = right, s = down, w = 
up. Other keys allow the hero to kneel, 
jump, and pick up objects. With the 
mouse, you can throw rocks and swing the 
moce. While this may sound complicated, 
with a little practice it is easy even for a 
non -typist ta use the keys. However, it is 
NOT easy to do well immediately. It takes 
proctice ta learn to maneuver through 
the various obstacles. In the heat of 
'battle" you can miss the *up" key and 
get killed. (An option screen allows you to 
change the control keys, but the original 
configuration seems to work best.) People 
without patience may give up in frustra- 
tion before they master the skills to pass 
through the various rooms. 

Ihe biggest surprise with Dark Castle was 
the ReaSound™. Actually, I didn't even 
know that my Macintosh HAD sound be- 
yond the usual beeps until the lightning 



- a review 

crashed in the opening screen and the 
organ began to ptay Vincent Price movie 
music. Each room has various sound ef- 
fects, including rushing water, bat 
squeaks, and a hero who grunts as he 
jumps and says *Yeah!" every time he 
picks up rocks. 

The game has no printed manual, relying 
instead on on-screen instructbns. Watch- 
ing the disk's three demo rooms helps you 
figure out the best way to handle those 
rooms, or for even more help, visit your 
dealer with a blank diskette and beg for a 
copy of the full demo disk, which will also 
give you a great idea of the scope of the 
entire game. 

There are three levels of difficulty, begin- 
ner, intermediate, and advanced, insur- 
ing that the game can remain interesting 
even after long hours of ptay. You score 
points by knocking out the various inhabi- 
tants of the castle, and you get bonus 
points for passing through rooms quickly. 
A 'Scores of Merit" screen keeps track of 
the top ten players. And should the action 
become too intense, the tab key pauses 
everything until you are ready to con- 
tinue. 

With a real arcade game, it takes rolls of 
quarters to become proficient, then more 
rolls to become expert. The advantage of 
Dark Castle is that you pay your 'quartets* 
up front, then practice at your leisure. And 
hundreds of hours later, the game will stiP 
be a challenge (unlike many other com- 
puter games). If you eryoy arcode gomes, 
and if you have the patience to learn the 
game skills. Dark Castle is certainly woith 
the investment. 

By: Gloria Anchor 

DARK CASTLE by Silicon Beach Software 

Programming: Jonathan Gay 

Design and Graphics: Mark Stephen Pierce 



68' Micro .Journal 



October^ 



37 



TEXT HACKING 

By: 

Daniel R. KWoran. Ph.D 
Director /Software 
Cognitive Engine Corp 
34 Atlantic Street 
Lynn. Mas»0l9O2 

Aie you a Text Haclaa*? Do you get your thrtHs from ma- 
nipulating ASCH flies to suit your fancy? More soberly, do you 
get stuck fixing up everybody else's Bks that this or that 
program chokes on? Then you ate. wltty-nlDy. a member of lite 
u/um^rifcaxL unorgantaeri. and of course unappreciated 
mmmunlty of Text Hackers." * 

What do you need to pursue this odd actMty? My list of 
tools conflshi o£ 

a) A good editor. (Or tun or three; I use six myself, but 
that's "gliding tlte UNO 

b) A text proc e ssor. The classic ones are TRDFF and 
NROfT and tlieta chlkfren and clones. The former Is for 
pronorttonalty spaced text, the tatter for fixed (typewriter] 
spacing. I use TSCs TEXT, which suffices, but could be 
Improved considerably. Frequently (a) and (b) aie axnbirvx) 
Into something calkxl a "Ward prenssnf * whlcl 1 Is aQ very well, 
but (tmlts your flexibility In crorslng (a]. 

c) A macro rjttnssor. Macro capahlllues aie provided by 
all sorts of different utilities, from edltots to enmpflers. but I 
prefer stand-alone macro procenorB like tlte one my company 
has Just Introduced for lite 6809 - ML/I. 

d) SNOBOL. preferably SNOBOL-4. Alas, this Isnt yet 
available lot our Motorola -based machines, although It has 
been Implemented on most mainframes and Is even available 
lot tlte IBM-PC. 

Most of you are famUW with edit as and lead promt* ra. 
and If my experience Is any guide, you defend your favorites 
with an enthusbsn I fear to challenge, whlcl i gives me a good 
excuse to ramble ar\ about maao pnxrsEEss, oranoting ML/ 
I In tlte procera. 

What Is a macro processor? Essentially It Is Just a system- 
atic text edltoi. In which lite substitutions are specified by 
some spe>4a) character patterns, whlcl 1 are procesed In the 
same way as the text to be edited. This is tlte pilndpal 
distinction between maao proressDrs and edltois which 
suppott maao capabilities - tlte maao commands are Imbed- 
ded In tlte text stream tatlter than being entered from tlte 
console. 

A good macro pransar, however. Is much more powerful 
than an editor., stnor It can support much more extended 
capabilities titan are convenient to execute from a kevbrard. 
GeneraDy a macro processor is baaed on a set of opEtttttrx 
morros which aie Invoked by the appearance in tlte text 
stream of certain text patterns, called 'calls" of tlte operation 
macros. 

The basic opetabon Is text replacement which Is arranged 
by calling an operation maao to define a user macro which will 
ther-afler be rerngnfazx) tn the text stream. In ML/1 this Is 
done by Inserting a string Uke tlte following Into tlte text 
stream. 

mff ABC AS DEF; 



After tlte maao prrxenar encounters this string It WiD 
recngrxte all sutxejuent appearances of tlte characters ABC. 



set off by spaces or punctuation, as cnBs of the user macro 
ABC, and this string will be (vploosi tn the text stream by lite 
string DEF. 

This Is about the simplest possible example of ML/I's ca- 
pabilities, yet it exhibits several features of Importance. 

Note tlte phrase "set off by spaces or punctuation.* This 
qualification Is made brrnusr ML/I does not process tlte Input 
text character by character but In groups of characters called 
atoms. An atom Is either' 

a) A punctuation character. Including spaces and car- 
riage-returns. 

or 

b) An alphanumeric string bounded on each side by punc- 
tuation charar&ra 

ML/I will not. for instance, replace ABC In lite string 
ABCDETCHUKLMNO 1234 5XYZ. 

Also note tlte semlcolnn at tlte end of the definition. This 
bounds, or dt&ntts tlte replacement text, and Is consequently 
called a drffrn/ler. Specifically, this Is tlte closing delimiter lot 
the maao MCDEF. The other delimiters in the example are 
"AS" and. for generality. -MCDEF- tlsctt 

Having defined one or more macros, the nexl facility tliat 
the user needs to know about Is tlte ability to turn ofT macro 
pn-n»!ng, This Is done by tlte feature known as a skip which 
can be defined In tlte following manner. 

naap MT, < > ; 

Here we have defined tlte skip whose name Is "<" and 
which Is In effect fiom tlte appearance of the "<* until lite char- 
acter ">" is encountered. Thus in 

ABC XiZ <ZZf ABC WCPQ ABO GOG ABC 

only lite first and last ABC would be n-pfami by DEP. e.g. 

D3* xyz ZZY. ABC MKPQ ABC 03G CEF 

Note that tlte skip characters have disappeared. This Is 
effected by tlte fiist argument of the skip definition, the string 
'MT* which b delimited by the comma. This argument con- 
sists of any or none of the letters M. D. and T. Of none Is 
present you dont need tlte comma either:) The letter T means 
that the enclosed text should be copied to lite output stream 
(otherwise It would be deleted.) The letter D means thai the 
delimiters. Le. the skip name and its terminal dettmltet. 
should be copied onto tlte output stream. If tlte letter D had 
been used tn tlte above definition, tlte delimiters "<" and *>" 
would also have been present tn tlte output The letler M 
means that this skip must match its terminal delimiter, that 
Is. It Is aObwed to be nested. 

Macros can have aroumente. The macro ABC Is an 
example of a macro without arguments. In ML/I. arguments 
must be separated by delimiters. Also a special atom or 
pattern of atoms must be defined as an Insert name, which 
when erux-jnlered will cause arguments to be Inserted Into 
the output text For example 

tens t . ; 
rCSKIP MT. < >; 

K2B' SWITCH , > ASC4A2. OU.>; 

sets up tlte insert "fit", tlte skip *<". and tlte maao 



38 



Octobof '87 



'68' Micro Journal 



"SWTIOr which has two arguments, ddtmrted by a comma 
and a semk-oion. In the output Stream, each crrurrence of 
SWITCH wiU result In lite two detenHed pieces of text being 
switched around, e.g. 

(DC SWITCH ZZY, FTC IJK m>; 

becomes 

QQHE FTC IOK HP ZZlf XXX 

Note that lite spaces around cadi argument liave been 
eliminated. Tills Is tlie result of using tlie Insertion "&AI." 
which trims off all surrounding spaces. If we wanted to retain 
Hie spans, we would have used "&B1." and "&B2.~ Instead. 

But enough of textbook examples. Let's examine a real Hfe 
prcblan I encountered Just a few weeks ago. I was obliged to 
tiy to get a very snooty mainframe to put out a text file In a form 
I could use on my 6809 Helix. Tlie mainframe was persuaded 
to yield ASCII, and eondescnded to produce variable- length 
rwmds, but by dint of no persuasion would It put carriage 
returns at tlie end of each Hue. So I got a file of 44K characters 
wltll no newUnes. The Macintosh wtfl edit such files, but most 
editors on tlie 66X19 have rattier axEervatrve notions of Imw 
long a line should be. and 44K Is rattier beyond tlie bounds of 
wtiat tliey liave In mlndt However, tlie mainframe also Insisted 
on producing useless brie numbers on each reu»d, and I 
noticed that tliey Ali. ended with lour conxrutJve zones. So 
I proressri) tlie Qle using ML/1 and tlie fallowing definttixet 

icins & .: 

K"3CD? MT,< >; 

KXXT SPACES SPACES NO 

ASOCrxO LlOUNLESSOHCSUB (UU .,-3,0) -0000; 

Hfl)0.tU.tAl.>; 

which tnsertnd carriage returns wtiere lliey belonged 
Admittedly, this packs a lot of ML/Ts most powerful 

capabilities Into a lot of space, but let's lake It one step at a 

lime: 

a) The first two lines you liave seen before, so tliey should 
be no problem. 

b) Tlie macro name Is "SPACES" which, when It occurs In 
a macro definition, to a "code word" lor "one or mote spaces." 
Hence, every orrurrence of a group of one or mote spaces In 
tlie Input text will be considered a call of tlie macro. Tlie ter- 
minal delimiter Is also SPACES. Wiry doesn't It get treated as 
a call of tlie macro we are defining? There aie two situations 
to consider: 

I) While tlie macro Is being defined. 

2 While tlie macro Is sannrng text looking far Its delim- 
iter. 

In tlie first case, tlie macro name to not yet in tlie 
"dictionary" that ML/I ises to determine If a macro to being 
called In tlie second case, tlie call Is tnhfctted by tlie delimiter 
"SSAS" which indicates that we have defined a "straight-scan" 
macro, tliat to orie that does not recognize macro calls while 
scanning far delimiters 

cJTlie replacement text constats of al text between tlie de- 
limiters "<" and ">" but this lext to subjected to prarasing by 
ML/I wtien It to trxsertol into tlie output stream. Conse- 
quently- any macro names present in tlie replacement text are 
remgntxd as calls and are expanded /executed at lliat time. 
This to why llie replacement text was enclosed In a skip - 
otherwise tlie macros In tlie re(Jaronait text would liave been 



expanded whlk tlie macro SPACES was being defined 

d) MCCO to an operation macro tliat Instructs ML/I to 
internipt Its scan of text and resume after tlie Indicated 
"label", provided tliat tlie condition specified in tlie MCCO to 
satisfied. 

e) MCSUB to an operarkn macro tliat returns as lis value 
tlie substring In Its first argument from tlie position given by 
Its second argument to tlie position gh*n by Us third aigu- 
menl As If tliat weren't complicated enmgh. zero and negalhc 
numbers Indicate offsets fmm tlie tight end of tlie text string, 
What this macro returns Is tlie last 4 characters of tlie argu- 
ment of tlie SPACES macro. 

Tlie MCCO condition to satisfied UNLES the tost 4 
characters of tlie SPACES arguments are zeroes. 

g) If tliey are zeroes, llie effect of tlie MCCO to to insert a 
carriage return. 

h) In dtlier case, tlie expression &L1. to a macro "label" 
and Is not copied Into llie output text. 

1) Tlie next ilem encountered, "&WD0." to Just llie macro 
name Itself, but specifically it Is 'llie number of spaces In llie 
atom which resulted in tlie call of Hie SPACES macro.'' Wliat 
Ihto does Is Insert Into tlie output text tlie exact number of 
spaces tliat were encountered, so lliat there will be no space 
suppression when a carriage return to NOT Inserted It doesn't 
matter much wlien one Is Inserted 

JJ Tlie final Item in tlie replacement text Is "&A1." which 
Just puts llie text between tlie two groups of spaces Into tlie 
output stream. We would liave used *&WA1 ." If tlie characters 
"&" or "<- had occurred In tlie Input file, but tliey didn't Tlie 
"W. which means "VWttten". would keep the argument from 
being expanded when It was (rooted 

k) The character *>* bounds tlie replacement text, and tlie 
sonknlon Bnlahas up tlie macro deflnltfc*v 

Lets see. liave we ovaknkerJ anything? Oh yes: 

Q The atom "NO* means tliat the proceeding delimiter (tlie 
terminal delimiter SPACES In Ihto case) to an exclusive delim- 
iter, which means tliat after tlie macro to exparded scanning 
of tlie input text tesum-s AT Instead of AFTER tliat delimiter. 
Since tlie terminal delimiter Is a macro name, it to then 
expanded. If we didn't do this, only every otlier group of spaces 
would be treated as a macro name, and we would certainly 
miss many of llie desired places to insert a carriage letum. 

mj Tlie parts of Hie MCCO, which would ordinarily look 
like 

tCGO II UNLESS KSUBttAl., -3,0) -0000; 

aie separated by tlie null expression "o" because ollrer- 
wbe the blanks would be considered calls of tlie SPACE 
macro! Now you see why thee delimiters must be defined with 
tlie "matching' attribute, since otherwise tlie first orrAm-enrr 
of ">" would terminate tlie replacement text! 

dazzling, tonl It? And so far we ate Just in tlie "muarle- 
fiexing* stage of using ML/I. Let me hear from you If you would 
like some mote tutorials on tlie use of this program. 



EOF 



Editor's Note: ff anyone qualifies for (he Ode Text Hacker" ll is certainly 
It I spend a good portion of each day reedltlng someone eises text. 
Mostly articles, but sometimes technical manuals for one oj "the foreign 
or domestic hardware rnarudaclurers who use us to produce their 
darumer>tn/t£n and manuals. Having used ML/ 1, lonlywIshthotllKod 
been available years ago) ML/I brings a lot oj needed power to those 
of us allll using 6809 systems. 

DMW 



68' Micro Journal 



October '87 



39 





The following ii the 
beginning of a continuing 
series. Most of you will 
remember Bob from hit 
sates of letters on XBASIC. 
If you like it or wmi more, 
let Bob or us know. We warn 
to give you - whal you wan// 



The Mathematical Design of Digital Control Circuits 



By: R. Jones 

Micron ici Research Coip. 

33383 Lynn Ave., Abboufotd. B.C. 

Cm»iJ» V2S1E2 

Copyright**) e by R. Jones & CPI 

Solutions to TEST TWO 



(a) Dual 

(b) Dual 

(c) Dual 



a + be' 
ab + c'd' 
(a + b') (c- 



♦ d) 



Complement 
Complainant 
Con pi erne nt 



a' + b' c 

a ' b ' + cd 

(a' + b) (c + d') 



2. Circuit diagrams appear below 



(a) Yl - ab + be + abc 

- ab + be Rule 5 

- b(a + c) Rule 7 

(b) LI - ab + a'c + bed 

- ab + a'c + (a + a') bed Rule 2 

- ab + a'c + abed + a 'bed Rule 7 

- ab + a'c Rule 5 (twice) 

(c) Yl - (a + b) (c + d) + a'b' 

- c + d + a'b* Rulea 8 and 6 

(d) ¥2 - (a + b) (a' + c) + b + c 

-aa' +ac+a'b+bc+b+c (multiplying out the parens) 

- ac + a'b + be + b + c Rule 2 

- b + c Rule 5 (3 timea) 



OH 



Hl^ 



-It 



■ if" J E 



b' 



fc) 




3. To save space, the Initial network will not be drawn. This will be left to the student. 



(a) 


L3 


- 


x+y+y' - x ♦ 1 


(Rule 2) - 1 (Rule 3) 


(b) 


Y2 


- 


a + bb' - a + 


(Rule 2) - a (Rule 4) 


(c) 


Yl 


- 


(a + b + c> (d + e) (b 


+ c 


+ d) (a + e) 






- 


abc + de + bed + ae 




Form dual 






- 


a (be + e) + de + bed 




Rule 7 






- 


a (be + e) + d(bc + e) 




Rule 7 again 






- 


(be + e) (a + d) 




and again 






- 


ad + (b + c)e 




Form dual to restore 


(d) 


LI 


- 


a'b'c + ab'c + a' be 










- 


b'c(a' + a) ♦ a'bc 




Rule 7 






- 


b'c + a'bc 




Rule 2 






- 


c(b' + a'b) 




Rule 7 






- 


c(b' + a) 




Rule 6 


(e) 






a + a'b + a'b'c + a'b 


'c' 


d + 






- 


a + b + b'c + b'e'd + 
a + b + c + c'd + . . . 














a + b + c + d+ 




Rule 6, and so o 


(e) 






(a + be ♦ e) (a + be ♦ 


I) 








- 


a + be ♦ ef 




Rule 7 



40 



October "87 



'68' Micro Journal 




4£ 



— iii >r 



to 
b' 



4t* 



-Cfr 



<3H 




CO 



■^ 



t->- 



— 11- 2 -!^ 



-»*— }^ 



(f) 



Mfle2 - heading Jor Mile 3 

THE BINARY NUMBER 8T8TEH 

Not again. I can hear you groan! We already know all that stufll This will be quick and painless, though, 
unlike our last session, which was pretty tough slogging. But I'm afraid It's necessaiy to recapitulate our 
knowledge of blnaiy numbering In order to get the complete picture. 

Ixt's begin by taking a look at the decimal system, in order to understand the relationship between ALL 
numbering systems In general. We'll concentrate on the simple number 101. What this really signifies is 
that the ilghtmost digit specllles the number of "units* In the number, the centre digit the number of "tens", 
and the leftmost the number of "hundreds". Note that because we are In the DECIMAL system, each digit (as 
we proceed from right to left) Increases by a factor of 10, and that the system also requires 10 symbols In 
order to function correctly, namely 0. 1, 2. 3. 4. 5. 6. 7. 8, and 9. Commencing with 0. the set of symbols ends 
with a digit which Is ALWAYS one less than the "base" in which we are working, that Is. 10. So. when we read 
the number 101, we are really adding up "one hundred, no tens, plus 1 unit" to give us our normal "one 
hundied and one". 

Now let's look at blnaiy numbers horn the same kind of viewpoint. Here, we are working In base 2. so, 
commencing with the ilghtmost digit of any number (or "word" as It's sometimes called), which we read as 
"units", each digit gets multiplied by the "base" 2 as we proceed leftwards, to give us "twos", "fours", "eights", and 
so on. Further, because we are working In base 2. we are constrained to TWO symbols only, commencing 
with 0, and the highest allowable symbol will again be one less than the base, giving us 1. The number 101 in 
this system Is Interpreted therefore as "one four, no twos, plus one unit", which Is equivalent to 5 In the mote 
familiar decimal system. Flom all this Info, you should readily see that Base 1 would be quite meaningless, 
as. commencing with the rightmost digit (or units), each digit to the left would Increase by a ratio of 1 (thus 
remaining a "unit" too), and further, the allowable symbols would, commencing at 0. be restilcted to a 
maximum of one less than the base, that Is again. So "0" would be all that we'd be able to count 

We are not going to go Into blnaiy math here, as It's of no concern In the field of logic, until such time as 
we need to create a blnaiy-addltion or multiplication circuit. 

LOOKING AHEAD 

In the next section, we're going to learn one of the newer techniques 1 promised you last time, which is 
going to make the manipulation of Boolean expressions SO much easier for you. but fli-st let's take a little 
peek at what the more dtstant future Is going to hold for us. We're going to take our first step away from the 
direct manipulation of Boolean symbols, and become familiar with translating freely between algebraic 
terms and their equivalent blnaiy numbers. Then later on In this course, we'll take the ultimate step to the 
use of decimal numbers, and learn how to design complex control-circuits by "playing around" wtth these 
decimal numbers and arranging them In special ways. 

We've all eady tried replacing an uncomplemented symbol with a "1", and a complemented symbol with a 
"0", when we looked at the Laws of Boolean algebra earlier on. so consider for a moment the following : 

In a 

In a 

In a 

The decimal equivalents are given here only to give you an Inkling of how our Ideas are going to develop, 
but for a little while, as I've already said, we'll stick with blnaiy. Just be patlentll 



2-r«lay circuit 


ab - 11 (bi 
a'b - 01 


nary) 


- 3 <d« 

- 1 


icimal) 


3-relay circuit 


obc - 111 
ab'c - 101 




- 7 

- 5 




4-relay circuit 


abed - 1111 
abc'd - 1101 




- 15 

- 13 





'66' Micro Journal 



October '67 



41 



THE KARNAUGH MAP, OR K MAP 

You're now ready (o meet a veiy powerful and versatile ally In the analysis, simplification and synthesis 
of Digital Control-Circuits. Here he Is - the Karnaugh-Map. named after a certain M. Karnaugh. If we are 
dealing with no more than 5 variables the K-map Is practically unbeatable, but beyond this number It 
becomes Increasingly cumbersome to use. as you'll eventually discover for yourselves, but by then we'll have 
moved on to better things. 

I referred to "analysis" and "synthesis" In the preceding paragraph, so let's clarify these words before we 
go on. Analysis means the study and possible simplification of an already-existing network, whereas 
"synthesis" means the design and bulldlng-up of an original network from a set of specifications. 

The basic 4-vai1able K-map consists of a block of 4 x 4 squares, as shown In Diagram 6. and algebraic 
terms can be entered on It as shown In each of the maps. 



<-<j\.O Q oi " 10 
oo 

II 

10 

















1 



















IN 


oo 


gj 


v 


\o 


oo 








1 


o\ 








1 












\0 











ab'c'd \0O\ 



hpb 



co 








1 


01 








1 


II 








1 


to 








1 



00 

oo 

oi 
II 

10 



IO 



1 






1 


1 






1 


1 






1 


1 






1 



ab'c' 



cw 



L. *> 



b' -i- 



At Ihe top-left of each square, the letters "ab" and the corresponding column-headings 00. 01. 11. 10 
mean that the headings are to Inteipreted as a'b'. a'b. ab and ab'. Similarly with the rows, which are read as 
c'd*. c'd. cd and cd'. 

Let's study each map In turn, and establish a system for entering an algebraic term In the correct 
squares. The first one. ab'c'd Is fairly simple - we simply translate It Into blnaiy. that Is 1001. and enter a "I" 
where the "ab" column 10 Intersects with the "cd" row 01. 

Map (b) is a little trickier. Here we must translate ab'c' as 100-. Ihe "-" marking the spot where the literal 
"d" belongs. Then we enter a 1 In column 10 (the first two blnaiy digits) everywhere that this column 
Intersects with a row where the equivalent "c" Is 0. that Is. rows 00 and 01. What weVe done. In effect. Is to 
enter ab'c' as if It were made up of two separate terms, ab'c'd' and ab'c'd. which, of course. IS so. 

ab'c'd' + ab'c'd = ab'c'fd' + d) - ab'c' (Rule 2) 

Applying these principles still fuiiher. In Map (c) we translate ab' as 10--. and simply enter 1 In the 10 
column in all rows, as the blnaiy translation tells us to Ignore the "cd" row-designailons. And finally. In Map 
(d). we translate b' as -0—, and enter 1 In all columns In which the literal "b" appears as (namely the first 
and last), and again Ignore the "cd" row designations entirely. 

Compailng the four maps, we notice that each time a literal Is omitted from a term, the number of Is 
entered on the K-map Is doubled. Another way of saying this Is that each time the number of Is Is doubled 
(note the relationship of the words "double" and "blnaiy") the corresponding term Is reduced by one literal. 
Note too that the number of Is ts related to the blnaiy system, namely 1. 2, 4. 8 - there are no terms 
corresponding to 3. 5. 6 or 7 entiles on the map. These observations are VERY Important and should never 
be forgotten. A further point Is that even when a block does equate to a blnaiy number It's rectangular In 
form. You won't find a "1* In one square and a second diagonally situated In a 2-entiy block, for Instance. 

If we look once more at the maps, we see that Ihe only term occupying a single square Is ab'c'd. and so It 

Is called ? .... That's correct. It's a "mlnlerm" and now you can see why It's so called. Consider this a 

moment before reading on. All the clues aie contained In the four mapsl The answer, of course. Is that It is a 
"minimum term" because It requires the minimum number of Is to recoid It on the map. If you try enteilng a + 
b + c + d. you'll find that the map will be completely lllled up. except for one solitary square somewhere. 
Hence the name "maxterm". for "maximum term". 

TEST THREE 

Enter these terms on K-maps. If you brought your pad of squared paper along wllh you. It shouldn't take 
long to draw up a set. IVe found it a good Idea to prepare a whole pageful of these maps and to Insert II Inside 
one of those transparent page-protectors which can be picked up almost anywheie. Then you can do your 
work wllh a grease-pencil or felt-tip pen. and simply wipe It all off when you're done. 



(]) a'b'cd' 

(3) I'b'c 
(8) ad' 



(2) 
(1) 
C9> 



abe'd' 
a'bc' 

b'c 



(5) ab'd 
(10) ab 



(6> a'cd' 
(111 a' 



(7) fed 
(12) d' 



42 



October '87 



'68' Micro Journal 



THE K-HAP METHOD OF SIMPLIFYING EXPRESSIONS 

From this point. It's but a short step to the simplification of Boolean expressions with the aid of K- 
mape. Initially, we'll make It a rule to expand our expressions out Into sum-of- products form, unless they're 
already so expressed . Thus (a ♦ b)(c + d) must first be multiplied out Into ac ♦ ad ♦ be ♦ bd. 

We'll start oil with a very simple example. The problem Is to simplify ab ♦ be' + ac' on a K-map. 



«K 


b 

OQ 


o\ 


11 


10 


v°b 


o\ 


11 


\o 


c£\oo_ 


01 


11 


10 


00 






1 




00 
11 

10 


1 




1 


1 


00 
o\ 
II 

<0 


1 




r 


r 


o\ 






1 




1 




1 


1 


I 




r 


r 


II 






1 








1 








1 




10 






1 








1 








/ 








d 


b 






ab-*- 


be 


/ 


< 


ab + b'cW 



(X^fdin 7 

The successive stages in completing the map are shown above. Fttst. we enter ab. then we add b'c' (note 
the correspondence between my use of the word "add" and the "+" or OR sign between each term), and finally 
ac' — Indicated by the squaies marked wtthdots. This shows us rtght away that ac' Is already included in the 
pievlous two terms (half of It In each one), so the expression obviously reduces to ab + b'c'. In a case like this, 
the simplification Is immediately dear to us. but this Is not always so, and we must learn to "read" a K-map 
properly before we can say that we're K-map experts. But notice in our example how we were able to do our 
simplifying without even knowing which Law of Boolean algebra to apply. The K-map did It all for uslll 

Now let's return to our Rules for Club-Membership. Remember how many steps we went through to 
icduce that one? The rules were at one stage translated Into the expression : 

xy' ♦ my ■♦■ xyz + mxz ♦ m'xz' 

Each step In the simplification was not too difficult to understand (did I really say that?), but It's still a 
tough proposition to start from scratch and tiy to figure which law to apply and when to apply It. bearing in 
mind that tfyou don't see how to apply a particular law you may not end up with the best reduction! With Ihe 
K-map. however. It's no problem at all. Simply enter each term on the map. and then read Itbackoutl Here's 
how : 



U7 V.PO oi 11 10 
00 

II 

10 





1 


1 






1 


1 





















xy 






00 




1 


1 




CM 




I 


1 




II 






1 


1 


10 






1 


1 



4- ms 



jzVoo 



OQ 




1 


1 




o\ 




1 


1 




II 




1 


r 


[ 


10 






1 


1 



•ty 



00 
o\ 

(i 

to 



my 

00 oi II 10 





I 








1 


r 






1 


f 


1 






1 


1 



+rAX2. 



.00 o\ 10 



00 




ram 




01 


'VA 


l( 




>u 




10 




iiL 


', 



+ «r»j<2- 

Dtjgrain 8 



'68' Micro Journal 



October's? 



43 



The scries or 5 maps In Diagram 8 shows how the terms axe entered to give us a complete map. First we 
enter xy". that Is -10-. to which Is added my. or 1-1-. followed by xyz. or -1 1 1. then mxz. or 11-1. and finally 
m'xz'. or 01-0. Notice how some squares are already 1 when we come to make a d liferent enliy, but we Insert 
no more than a single " 1" tn any square. The unoccupied squares are understood to be "0". but we don't bother 
to fill these In as It makes the map too cluttered and difficult to read. 

Knowtn g that the answer to this problem Is x + my. we soon discover that If we enter these two terms on 
another map we end up with the same map as we have here. Try It as an additional exercise. But If we didn't 
already know the answer, how do we read this map to gtve us this m ♦ xy? 

READING A K-MAP 

Recall for a moment that we found that the larger the block of Is entered on a K-map, the smaller the 
term to which It corresponds. So. bearing In mind that one of our chief aims In desijpilng good circuits is to 
get the smallest possible network to cany out a particular function, we are most definitely Interested In the 
Largest possible blocks available on the K-map. Plus, of course, as few blocks as possible to cover all the Is 
we have, as long as each block, or "loop" as It's properly called, contains 1. 2. 4. 8. etc ones. It's called a loop 
because It's customaiy to draw a loop around each block selected for read-out. as I've done In the final map 
above. 

in reading a map, each "1" MUST be contained in a rectangular loop (no Os are allowed), but you may 
Include the Is In as many loops as proves necessaiy In order to make them as large as possible. In our 
example IVe Included two of the Is, you'll notice, in both loops. 

While the method of read-out Is quite simple. It still needs a little practice before you become proficient 
at forming the best combination of loops. 1*1*8 try reading the larger loop first. Here's how : 

(a) Read the COLUMNS of the loop first, writing down a "-" In each position in which the variable 
appears In both forms (0 and 1). otherwise write down a or a 1 for the variable. 

(b) Apply the same principle to the rows of the map. 

Let's elaborate. In the larger loop theie are 2 columns Involved, namely 01 and 11. and as the first 
variable appears In both forms, and the second only as "1". we write -1. The loop covers ALL rows, with both 
"y" and "z" appearing as and 1. so we write down -- for the rows. This gives us the complete term -1--. which 
translates Into "x". 

In the snaller loop, only the first "1" Is common column-wise, so we write 1- for this. Row-wise. too. It 
has only the first "1" tn common, so again we write 1-. for a combined blnaiy entry of 1-1-, which, of course, 
translates as "my". The complete read-out Is therefore 

x + my 

and again we have no Idea of which Laws got applied, or in which order. Good old K-map did It all for us 
In one fell swoop!! I know, you're wondering why I didn't tell you all of this earlier. Instead of dragging you 
through the "laws of Boolean" swamp. Could it be that sometimes the sadist In me gets the better of me? Not 
really - the swamp happens to be on our route, and without experiencing the hard parts how can you 
appreciate to the full the easy parts? 

FORMING A GOOD LOOP COVERAGE 

Some htnts on how to form a good loop coverage of a K-map. ALWAYS start with the smallest loops and 
form progressively larger ones until every "1" on the map is covered at least once. That Is to say, you should 
first form a loop around all single Is (one loop apiece, of course) which CANNOT be grouped with any others. 
That is, there Is no other "1" adjacent to It. either horizontally or vertically. Then look for loops which 
CANNOT be made bigger than two: then four: then eight and so on. Once all the Is are covered you can stop!) 

Loops MUST conform to the blnaiy system (they must contain either 1. 2 4. 8. etc Is), and also the 
number of columns or rows In the loop must so conform. No loops spread over 3 columns or 5 rows, for 
example! Read on a little more before you get too Involved with trying your own maps, however. 

MAPPING A PROBLEM SOLVES THE PROBLEM 

But first make note of the remarkable fact that if you can once convert your Initial problem to a form 
where you can successfully enter It on a map. you have at the same time SOLVED the problem. All you have 
to do is to read the answer back from the map! And therein, my friend, lies the key to the whole of our circuit- 
design technique. 



October "87 '68' MterO Journal 



MORE ON K-MAPS 



^ni^.^ 



11 

I 



y$a 



o 






a 



^ 



Dia&Bm9 



The K-map In Diagram 9 represents the Boolean expression 
ab + be' ♦ b'd' 

Let's go Into more detail before we move on to using K-maps to actually design circuits. Maybe you've 
been wondering why the rows and columns, although labelled with 2-blt binary numbers, are not In 
numerical older. If they were, they would be In the order 00. 1 . 10 and 1 1 . All rather strange. Isn't It? 

However. If we look a little more closely we notice that commencing on any square on the map. If we 
move horizontally or vertically by one square, the appropriate column or row designation changes In only 
ONE of Its bits. For example. If we commence In the top-left square, whose coordinates are 0000. and move 
one square to the right we find ourselves In location 0100. Only the second bit from the left has changed. If 
we move downwards flora this square, only the final bit has changed, to give us 0101. and so on. In other 
words. SQUARES WHICH ARE ADJACENT IX) ONE ANOTHER CHANCE IN ONLY ONE BJT POSITION. It's 
also true that SQUARES WHICH DIFFER IN ONLY ONE BINARY BJTPOSmON ARE ADJACENT TO ONE 
ANOTHER. 

GRAY CODE AND DOUGHNUTS 

When btnaiy numbers are arranged In such an order that each successive number changes by one bit 
only, the ordering Is known as a Cray code, and Is of PARAMOUNT Importance In the designing of RELIABLE 
digital conlrol-clrcults. Even when the sequence overflows fnora 10 back round to 00. there Is still only a 1- 
blt change! As we're not yet Into design, however, let's consider for the moment Ihe consequences of the 
emphasised statements at the end of the preceding paragraph. One such Is that as that the top and bottom 
rows of our K-map dtlfer in only one btt. they MUST be adjacent. In other words, Ihe K-map is really an 
opened-out cylinder) But wait!) The left and right-hand columns are only one bit apart too, which leads us to 
the conclusion that the map really represents the surface of a "torold" or doughnut. 

TRANSMISSION AND HINDERING FUNCTIONS 

Now let's come back to Dla^am 9. and read It out as follows. The vertical column of four Is gives us "ab". 
the circled block of four "be" and Ihe four corners (which are all adjacent) can be grouped Into a block of four 
to form "b'd*". the complete expression being "ab ♦ be' ♦ b'd". 

This expression gives us the conditions under which the network as a whole will transmit current to 
whatever device Is connected to It. In words. It Bays that if Relays A AND B are energised. OR If Relay-B Is 
energised AND Relay-C not. OR If both Relays B AND D are de-energlsed, the device will be energised. 
Because It gives the conditions under which the network will transmit current. It Is called a TRANSMISSION 
FUNCTION. Ihe blank squares on the map (realty Os) give the conditions under which the circuit will NOT 
transmit, that Is. a'bc + b'd. Do you see how to obtain this? What we did was to gioup as a loop of 4 Ihe two 
blanks In the left and right-hand columns, and as a loop of 2 the two blanks In column 01. This Is known as a 
HINDERING FUNCTION. 

Ihe negation (or complementation, or opposite) of a hindering function Is a transmission function. 
That Is (applying It to our current example) : 

(a'bc + b'd)' « (a + b' +c1(b + d) 

becomes a transmission function, and although this Is a completely different network from the original 
transmission function formed by reading the Is, the FUNCTION Is exactly the same. Draw them both, with a 
Light as the controlled device, and verify that whenever the relay conditions are such that one of the lights Is 
lit. then bo will the other one be also. 

A Is reading always gives us an expression In "sum-of-products" form, while reading the Os and then 
negating the expression gives the "product-of-sums" form. Ihe factorlsed form of an expression, such as Ihe 
Is expression above, namely b(a ♦ cl + b'd'. Is known as a hybrid or "monfyel" form. 

VEITCH DIAGRAMS 

Prior to M. Karnaugh's K-maps. the columns and rows were arranged In strict binary order, which made 
It EXTREMELY dlfllcult to figure out which square was adjacent bit-wise to which. Loops also tended to be 
quite messy as they wiggled and squlggled everywhere to Include their Is. and to avoid those outside Ihe loop. 
These original maps were called Veltch diagrams (I'm afraid I don't recall the gentleman's initials], and to 



68' Micro Journal 



October U7 



45 



this day some people STILL use them, erroneously calling Ihem Kama ugh- maps. In their day. though. Ihcy 
represented a step forwaid ftom what had gone before. 

A PEW WORDS OF COMFORT 

Once you've completed TEST FOUR It's fairly safe to say that you're out of the Jungle for some time to 
come, and while 1 cannot promise that there won't be any moie lough patches. I doubt that any will SEEM as 
tough as these ilrst few miles MUST be to a student having his llrst encounter with Boolean algebra and re- 
maps. There ARE more complex Ideas ahead of you. but by the time you reach them you'll be a seasoned 
campaigner and will be well-equipped to deal with them. Nuff saldl! 

TEST FOUR 

Read the following K-maps In both sum of-products and product-of-sums form. 






00 
01 
II 

10 





1 


1 




1 






1 


1 






I 




1 


1 





(P 






oo 

01 

(I 

10 



to 



ca\ oo oi U to 



oo 


1 


1 


1 




0\ 


1 


I 






(1 










10 




1 


I 




A 


an 

> 

OO £»1 11 (0 


oo 




1 


I 


1 


Oi 






I 




II 










10 




I 


I 


1 





°9 


01 


II 


\o 


1 

©o 


\ 


1 






OI 


1 


1 


i 


1 


II 


1 


1 


[ 


1 


lo 


1 


1 







Cm) 

vdb 
oa\P° ol - " 



oo 


I 


I 


1 


I 


o\ 


1 






I 


(1 


1 






1 


10 


1 


I 


1 


1 

— 



Cv) 



Cvi) 



Uxi) 



v ab 
cA \oo oi H IO 



oo 


1 






1 


OI 


I 


I 


I 


1 


II 


1 


1 


I 


1 


IO 


1 






I 


cd\oo oi il to 


Oo 




1 






e>\ 


1 


I 


I 




II 


i 


I 




1 


IO 


1 






\ 



Cvml) 



As a further test In both completing and reading a K-map. and at the same time simplifying a circuit, 
you should also tiy 'IT5ST TWO again for all examples Involving four, or fewer, variables 
Next time round, we'll begin desiring something or othertl I promise! 
Endo/MUe>2. 

EOF 



FOR THOSE WH 




46 



October's? 



68' Micro Journal 



Pascal 



A 
Tutorial 



By: Robert D. Rclmlllor 
Certified Software Corp 
616C«ntir» Caballo 
Ntpomo. CA 93444 
805929-1359 



aaBB 



l-i ast month (actually, August) I mentioned the 
debugger in passing. This month we will take a closer 
look at debuggers for high level languages. 

The amount of debugging assistance a high-level 
language package offers varies widely. At one end, there 
are those packages that offer no support at all (this is 
typical of many "C" compilers), at the other end there are 
those that are very good, including being able to 
manually execute statements any time you want (this is 
typical of many Basic interpreters). 

The debugger I will discuss lies someone in between 
these two extremes. 

First of all, lets see what we need as far as getting the 
information in to the debugger. The OmegaSoft Pascal 
compiler can generate three basic output formats for 
object code : 

1) Relocatable object code. Used when we want to 
link the modules together to get a stand-alone module 
for use under OS-9 or on a target system. 

2) Intermediate code. Used with the debugger, with 
or without debugging information imbedded into the file. 

3) Assembly language. Used for documentation 
purposes. 

Format 2, intermediate code, is a sort of binary 
assembly language. The format is a series of pascal 
strings with the following format : 

1) Length byte - number of bytes in the record. 

2) Opcode - one byte that represents debugger 
information or an assembly language opcode. 

3) Size - one byte representing a data size of byte, 
word, or long for assembly language opcodes. 

4) Postbyte - for assembly language opcodes, 
indicates the addressing mode, such as tegister direct, 
auto-increment, etc. 

5) Value - zero or more bytes representing the value 
that goes with the postbyte, such as a indexed register 
offset, or external label name. 

Fields 4 and S can be tepeated for those opcodes 
that require two operands. 



In addition to assembly language opcodes, there are 
special opcodes for debugging information. There are 
two main types, debug,, and line. Line records are vety 
simple, they simply tell the debugger that the code that 
follows starts at the line number specified in the file. This 
is used to set breakpoints at the start of pascal 
statements. 

A debug records has a number of options : 

1) Start of a procedure. Information included is the 
procedure's internal name (a unique name for each 
procedure in the module), parameter size, and 
procedure name. 

2) Start of an external procedure. Same information 
as 1) above. 

3) End of a procedure. Information included is the 
procedure's internal name, and it's name. 

4) Variable record. Information included is : 

a) variable name 

b) symbol table pointer (in the compiler). This field is 
used for handling referencing a type that is used as part 
of another type or variable. 

c) block name. This is the internal name of the 
procedure where the variable/type is defined in (globals 
have a block of -1). 

d) Id group. Can either be a type or a variable. 

e) storage group. For instance, register, stack, varib 
external, record offset. 

f) storage address. Depends on the storage group, 
always 4 bytes long. Can be stack offset, absolute 
address, an internal name, or register number. 

g) Type. Can be the actual type or a value indicating 
it is a parameter or function return, if so, the actual type 
wiD follow. 

h) Extra information depending on type : 

1) For types that defer to another previously defined 
type, the symbol table address of that type. 

2} For longhex/pointers, a byte that tells whether it is 
a simple longhex, a pointer to a standard type (such as 
integer), or a pointer to a non-standard type. If it is a 
pointer to a non-standard type, then there will be the 
symbol table address of the non standard type. 

3) subranges. Two, byte, woid, or longword entries 
that represent the offset and range of the subrange. 



'68' Micro Journal 



October's/ 



47 



4) Strings. One byte that indicates the maximum 
length of the string. 

5) Sets. One byte that indicates the maximum length 
of the set (in bytes) and then the entty for the base type 
of the set (this data starts over with item g) above). 

6) Arrays. For each index declaration in the array, 
the type is defined (starting with item g) above). The last 
thing is the definition of the base type of the array. 

7) Devices. Four byte size of the device followed by 
the definition for the base type of the device. 

8) Records. Four byte size of the record, four byte 
symbol table address of the last field in the record. For 
each field in the record a new varib debug record follows, 
including name fields, record offset, etc. 

4) Pointer resolution. Since the base type of a pointer 
can be defined after the pointer to the object, this record 
binds the pointer to the type it points to. 

5) Module. Tells the debugger the name of this 
module. 

6) Program. Tells the debugger the name of this 
program. 

7) Lex. Updates the debugger as to what lexical level 
(procedure nesting) is being compiled. 

Since this information is imbedded within the code 
being generated, there is no need to create a separate 
debug symbol file (which wastes time and storage) and 
makes correlating between symbols and code relatively 
easy for the debugger. 

The compiler can generate an intermediate file with 
or without debug information. Any file generated without 
debug information will run real-time under the 
debugger, since the same code will be executed as if you 
went through the link step. Code that is generated with 
debug information will execute the same code, but in 
addition, will execute a routine at the start of each pascal 
statement, and at the start and end of each procedure. 
The amount of overhead depends on whether there are 
any breakpoints in place, or if options such as statement 
trace are enabled. 

Certain sections of a program can be selected to 
have debug information on or off. This is particularly 
necessary for such things as exception and intercept 
procedures, which must not be delayed by the debugger 
for any reason. 

The other type of file we want to be able to include 
when we are debugging is assembly language files. For 
these we allow loading of relocatable object files. 

Now that we have an idea of the files we want, lets 
look at the commands that have been implemented for 
handling these files. First of all, the debugger has three 
different modes. When we enter, we are in the "filer" 
mode. After all files are loaded, we can move to the 
"pascal" mode. The third mode, "assembly" mode, can 
be entered from pascal mode, and then you can return to 
pascal mode from assembly mode. Once you have left 
filer mode you cannot return, since some of the symbol 
table information used in filer mode is re-used once you 
enter pascal mode. 



Filer mode allows the following commands : 

1) Load relocatable object files. These can be 
assembly language modules for support routines for 
your pascal program, or replacement runtime routines. 

2) Load intermediate code. Loads the intermediate 
code into memory, translating it into 68000 object code 
for execution. If there is debug information embedded in 
it, it also builds the symbol table for each module. 

3) Link. Resolves inter-module references for both 
the object code, and symbol table information. 

4) Check. Docs a cross reference check between 
symbols in each module. For instance, if you had 
changed the parameter type of a procedure in one 
module from value to variable, but forgot to change it in 
the other modules that call that procedure, this 
command would warn you about it. 

5) Status. Displays amount of table space used and 
remaining, sizes of each module, and inter-module 
symbol table references. 

6) Default I/O. Lets the program being debugged 
use the same standard I/O handlers as the debugger is 
using. If you need separate ports for the debugger and 
the user program, then these must be loaded as 
relocatable object files and this command not used. 

7) Set exception vector. Allows the user program to 
handle exceptions, following restrictions that the 
operating system may impose on the user. 

8) Enter pascal mode. Enters pascal debugging 
mode. 

In the pascal debugging mode you are concerned 
primarily with what happens at the pascal source level. 
There is a command that will display the current pascal 
source code where you are stopped at, including an 
indication of which tines actually generate code so that 
they can be breakpointed at. Facilities are also included 
so that you will not stop at the breakpointed line until it 
has executed a certain number of times. There is also the 
capability to execute a "macro command" when the 
breakpoint stops. These "macro commands" are simply a 
list of commands that you type in before you start the 
program. 

The other main item you want to deal with are pascal 
variables. The advantage of a high-level debugger like 
this one is the ability to inspect and change variables in 
their actual format, be they characters, integers, reals, 
strings, arrays, or records. This was the reason for 
including such detailed information about variables in 
the intermediate code. In addition you also want to be 
able to index into arrays, or select individual fields within 
a record. This is especially useful for following a linked 
list structure, where you might want to look at the 3rd 
record in a linked list, and a field called count in that 
record : 

<P> d base A .link A .link A .count 
base A .link A .link A .count »150 
<P> 

Since source code can change frequently, and none 
of us really wants to wait for a listing (unless you arc 



46 



October 37 



'68' Micro Journal 



looking for an excuse to take a nap), many times we do 
not get a new listing when changes are made. To make it 
easier to find what line number we want to breakpoint at, 
there is a facility that prints the starting line number of a 
procedure, this combined with the source listing facility, 
makes locating the desired line fairly easy. 

For instance, in the prime number test piogram, we 
can find the begin of the main piogram by typing ; 

<P> n program 
prime.9 
<P> 1 prime.9 

Would display lines before and after line 9 in 
module prime at the top of the screen, as : 

5: var 

6: flags, airaylO .. size! of boolean ; 

7: i, prime, k, count : integer register ; 

8: iter : integer; 

9* begin 

10* writeln {'10 iterations') ; 

11* for iter := 1 to 10 do 

12: begin 

13* count » ; 

14* fori :=0 to size do 

15* flags[ll:=true; 

In order to start the user's pascal program, we enter 
the GO command. Befoie stalling the program, the GO 
command will parse the specified command line (if any) 
and look for standard I/O redirection modifiers. This 
allows programs that are written as filters to be properly 
tested using the same redirection facilities as provided 
by the shell. 

There are two types of proceed commands, proceed 
and trace statements, and proceed to breakpoint. In the 
first instance, we can select how many statements to 
execute until we stop. In the second instance we can 
proceed until we encounter a previously set breakpoint 
(up to 16), or proceed to a temporary bieakpoint. 

Statement trace and procedure trace commands are 
included. The procedure trace command will list out up 
to 50 procedure entry's and exit's in the order they 
occurred. Statement trace will list out up to 50 statement 
numbers in the order they were executed. Statement 
trace capture must be previously enabled, this avoids the 
extra overhead if this feature is not wanted. 

Assembly mode can be entered at any time and 
provides a variety of commands to allow debugging at 
the assembly language level. 

A line by line assembler, disassembler is provided. 
The starting location can be specified as either the actual 

FOR THOSE WH\ 



code address, or as a statement number in a pascal 
module. Runtime routine names are expanded into their 
actual name, rather than just displaying an address, to 
make correlation between the pascal source and 
assembly language more apparent. This mode if useful 
when you want to "patch" the code rather than going 
back and editing and compiling a module to make a 
change. It is also useful to see what the actual code 
generated was, just in case you are unsure of what the 
pascal statement is really supposed to do. 

Assembly mode also provides it's own breakpoints 
(up to 16), and again, a macro command can be executed 
when the breakpoint is encountered. Assembly mode 
also piovides the following commands : 

1) Block memory move. 

2) Calculate value of expression, works as a simple 
hexadecimal calculator for figuring offsets. 

3) Change registers, both data and address. 

4) Chimp memory in hexadecimal and ASCII. 

5) Find one to 16 byte pattern in memory. 

6) Initialize an area of memory. 

7) Memoiy modify /set. Allows inspecting/modifying 
memoiy as bytes, words, or longwords. In addition allows 
skipping every other byte for I/O ports. The memoiy set 
command is the same except it does not read the 
memory contents to allow access to write-only I/O ports. 

8) Set offset. This value is used when working with 
code only, such as disassembly and breakpoints. 
Normally set to the starting address of the module you 
are working with. 

9) Proceed to breakpoint, add temporary breakpoint 
if wanted. 

10) Display registers. 

The target debugger (which runs over a serial link 
between the host and the target system) also allows 
assembly language tracing, since it does not have to fight 
the operating system for the trace vector. 

These capabilities provide a quite usable debugging 
capability without requiring any special hardware 
attachments, which many of us cannot afford anyway. As 
a large project progresses, only a few modules will 
probably be changed at any one time, so that all others 
can be compiled without debugging information, 
allowing real-time execution of those modules. 

In the next chapter we will take a look at a program 
that does OS -9 system calls. 

OmegaSofi is a registered trademark of Certified Software 
Corporation, OS-9 and OS-9/6B000 are trademarks of Minvworc 
Systems Corporation. 

EOF 



a NEED TO KNOW 



68 MICRO 



JOURNAL 



<tm 



'68' Micro Journal 



October's? 



49 



Bit-Bucket 




NEW FAMILY OF INDUSTRIAL MICROCOMPUTERS 

PERFORMS 

IN HARSH ENVIRONMENT. 

GESPAC announces its entry in ihe systems business with 
the introduction of a new family of versatile microcomputer 
systems aimed at ihe industrial marketplace. The GESCOMP 
is a powerful real-lime, mulli -tasking microcomputer 
system in a rugged and compact single height Eurocard 
package, that allows ihe user lo monitor, lest and automate 
processes in a variety of harsh industrial and military 
environments. 

The GESCOMP system is intended lo be used as a process 
or cell conuoller in factory automation applications. The 
GESCOMP is ideal for use as imbedded computers in 
intelligent machine tools and specialized instrumentations. 
The GESCOMP systems can also be used as total hardware 
and software development workstations. 

The GESCOMP offers the highest level of processing power 
for systems of its class and size. At Ihe low end of 
GESPACs offering is the GESCOMP 8300- M which uses a 
8 MHz 16-bit 68000 microprocessor and comes equipped 
with two I Megabyte 3.5" floppy disk drives and 512 
Kilobytes of RAM. The most powerful member of the 
GESCOMP family is the GESCOMP 8340-P/HF which 
features a very high performance 32-bit 68020 
microprocessor running at 16.7 MHz with a 68881 
arithmetic co-processor. 2.5 Megabytes of RAM, 1 
Megabyte of 3.5" iloppy disk storage and 40 Megabytes of 
hard disk storage. Several variations of these systems are 
offered by GESPAC depending on Ihe amount of processing 
power needed and the required disk/RAM storage capacity. 
The open G-64 bus architecture of Ihe systems allows 
memory expansions up lo 32 Megabytes. 

The GESCOMP system is supported by the OS-9 disk 
operating system which is well accepted and familiar lo the 
automation industry. OS-9 features an advanced "UNIX- 
Like" structure and form. A special library allows OS-9 lo 
ran programs written for UNIX in C. Unlike UNIX, 
however, OS-9 features a lean and fast modular structure thai 
can easily be pul into ROM for diskless systems. Ihe real- 
time, mulli-lasking nature of OS-9 permits the user to di- 
vide his applications inio several concurrent tasks, while 
allowing real-lime response to outside events. The modular, 
multi-user architecture of OS-9 permits the addition of a 
new user lo the system in no time. Depending on Ihe load 
of work, the GESCOMP system will support up lo 16 users 
on line simultaneously. 

The GESCOMP is delivered complete with Ihe disk 
operating system, a screen editor, macro assembler, 
symbolic debugger, linker, and a C compiler. Other high 
level language interpreters or compilers are optionally 
available for Fortran, Forth, Basic and Pascal. 



By: AH of us 

•ContribuuWptkutg - Ij^ta tyUung\ DMW "86 



A key feature of ihe GESCOMP system is ils open G-64 bus 
architecture which allows a degree of customization which 
is unsuipassed in ihe industry. This customization is 
essential in order to meet Ihe specific requirement of mosl 
industrial applications. For instance, a GESCOMP may be 
configured as a data acquisition system by adding analog 
I/O modules and additional nonvolatile storage memoiy. Or. 
by adding motor controller cards and industrial I/O inter- 
faces, the GESCOMP can be Ihe main conuolling unit of a 
milling machine. 

A GESCOMP syslem typically provides 8 unused slots, 
each of which can accept any one of the 150 G-64 board 
level products in GESPACs catalog. The GESCOMP will 
also accept G-64 bus board level products from any of the 
more than 30 independent G-64 bus vendors. The G-64 bus 
is a second generation microcomputer architecture aimed at 
midrange industrial applications. 

GESCOMP are designed lo communicate with Ihe operator 
with a standard CRT terminal. It is also possible lo connect 
graphics cards into Ihe system lo display high resolution 
pictorial information of 640 by 480 pixels lo 1024 by 
1024 pixels in 256 colors out of a palette of 262,144. 
The user cut easily install one or more of these graphics 
controllers into Ihe same backplane lo control multiple 
displays at once. 

Another unique feature of the GESCOMP systems is their 
networking capability. Using GESNET. a proprietary 
network protocol from GESPAC. up lo 50 GESCOMP 
systems can talk lo one another over 3.000 feet of coaxial 
cable. Ihe Network operates at 800 kilobits per second and 
achieves very high throughput thanks lo ils superior 
CSMA/CA (Collision Sense Multiple Access / Collision 
Avoidance) arbitration and ils Direct Memory Access 
operation. GESNET's cost per node is a fraction of the 
typical cost of more publicized networks such as Ethernet 
or M AP. 

A version of the GESNET controller board is to be released 
by GESPAC for the VME bus. This connection will allow 
GESCOMP systems lo perform as a front end processor 
with VME based supervisors in a hierarchical, distributed 
processing architecture. The network is totally integrated 
into the disk operating syslem, thus allowing transparent 
access to all resources. For instance, all graphic screens, 
disk storage and communications ports are accessible from 
any processor in Ihe network. 

For use in the mosl sevtae environments, where mechanical 
disk drives are not allowed, Ihe GESCOMP can run without 
a disk. In this mode of operation, the systems can boot 
from the operating systems and application programs 
located in EPROM. The GESCOMP is also expandable lo 
use a bubble memoiy cartridge syslem for use in Ihese 
environments. Using GESNET. a disk based GESCOMP 



50 



Odcber '87 



'68' Micro Journal 



located in a clean environment can save as file server for 
several ROM based GESCOMP systems on the harsh factory 
floor. 

The GESCOMP system uses a modular architecture with all 
vital functions readily accessible behind the front panel for 
easy service and expansion. The system is based on the 
100 by 160 millimeter (4" x 6.25") G-64 bus Eurocard and 
features a rugged DIN 41612 pin-in-socket backplane 
architecture. The small form factor of the cards and the 
superior DIN connector,, make the GESCOMP particularly 
resistant to shock, vibration, and corrosion due to airborne 
contaminates. GESCOMP is packaged in a table enclosure 
for development or laboratory environment or in a 19" rack 
for mounting in a NEMA enclosure or dir«ctly into the 
application. Each GESCOMP includes a 200 Watt power 
supply. 

Other versions of the GESCOMP systems, using the 80286 
microprocessor and the MS-DOS operating systems are also 
available from GESPAC. 

GESCOMP systems are available now. prices start at $3995 
for single quantity orders of the basic system 
configuration. OEM discounts are available for large 
quantity orders. 

# # # 
BILL WEST INCORPORATED 
174 ROBERTTREAT DRIVE 
M1LFORD, CONNECTICUT 06460 
203 878-9376 

NEWS RELEASE 

SYSTEM CONFIGURATION SERVICES 

Bill West Incorporated is pleased to announce the 
availability of system configuration services for users of 
industrial computers. These services are intended to assist the 
user in selecting and integrating a system with appropriate 
interfacing and system software for particular applications. 
BWI specializes in systems using the VME and STD bus. 
single board computers, and the OS9 operating system. BWI 
will develop drivers and software libraries to allow simple 
control of I/O devices from assembly and high level 
languages. BWI can supply tested systems configured to 
customer requirements, with ihe OS9 operating system 
installed. 

I/O EXPANSION 

Bill West Incorporated currently has under development a 
line of products which allow the use of the STD BUS as an 
I/O expansion bus for VME, single board. Macintosh, and 
Atari ST computers. This allows the wide variety of existing 
STD bus interfaces to be used with ihese powerful computers. 
The STD BUS may be configured as a bus extension or as an 
intelligent subsystem. Communication between the master 
processor and the STD BUS is via the Motorola I/O channel. 
SCSI port, or ARCNET interface. Existing STD systems 
using non- Motorola processors can be incoiporated into a 
larger system using a 68000-type processor as the master 
processor. These products will be available in ihe fourth 
quarter of 1987. 



ABOUT BILL WEST INCORPORATED 

Bill West Incorporated was founded in 1985 to provide 
systems and support lo users of industrial computers. We 
have worked with OS9 systems since 1980. In addition to 
extensive experience in implementing microcomputer 
systems, BWI personnel have experience in many aspects of 
system implementation, including analog and digital design, 
system specification, system documentation, and the 
integration of minicomputers and microcomputers into large 
systems. 



V T«HNOLOOI« 

22*1 i. lllf A*». 

vtom*, ac. aw* vw \V 
NEW PR00UCT SNIWUHCtwEItT 



Sard 5 Technologies are pleased to ar>iounce their new IMC 
floppy disk controller that Is compatible "1th all three of 
Tandy's Color Computer models. Including the new CoCo 3. 
Ttie performance of Hlcrgware's mult t-user. mult t-t asking, 
OS-9 operating system is greatly enhanced by the IMC 
controller's new "no halt" node, which frees up the CoCo's 
6D09C microprocessor to execute other tasks while disk 1/0 
Is taking place. 

The DHC controller is designed around the Western Digital 
WU177J floppy disk controller chip, «k or 3?K bytes static 
RAK, and a IS bit counter. Sufficient on-board logic Is 
provided, that once the read or write operation has been 
Initiated, the controller can transfer data between the 
buffer RAM and the disk drive all by itself, with no 
involvement of the main processor. Interrupts can regain 
unmasked and available. The buffer RAH 1s large enough that 
even a full track write, such as performed while formatting 
a disk, can be done using the "no halt" mode. However, the 
original Radio Shack "Halt" node is also retained to 
maintain full compatibility with existing non-0S9 software. 

The "rist noticeable benefit of the "no halt" node Is that 
the keyboard remains "alive" during disk t/0. with no lost 
characters when using OS-9's type-ahead feature. Compiling 
a program in the background while simultaneously edlttlng 
anotner file is no longer the exercise In sheer frustration 
it was with older CoCo olsk controllers. The overlapping of 
one task executing while disk t/0 1s taking place for 
another task can also contribute to an increase In total 
throughput . 

A specially adapted version of O.P. Johnson's S01SK package 
is included with the ONC at no extra cost. In addition to 
being able to read/wrl te/foraat virtually any OS-9 disk 
format. S01SK also has calls to read and write data from 
non-0S9 disks. This allows S01SK to support several other 
packages such as O.P. Johnson's PC-IFtR package (available 
separately for 545) wntch reads and writes 1BH-PC format 
disks. 

A 2* pin ROM containing Radio Shack Disk Extended BASIC 
version 1.1 Is normally installed, but provision IS made to 
also accept 28 pin EPROH's, ranging from a 2764 to a 27256. 
If users wish to have two DOS's (eg. Radio Shack's DOS 1.1 
and Spec troSyst eos ' A00S) present in the controller, an 
optional external switch can be installed to select between 
the upper and lower half of the EPS*, with each half 
containing a different DOS. The DOS's may he either UK or 
16* bytes in size. 

The UHC controller comes in a black, aluminum case, ready to 
plug Into the CoCo's Multl-Pak Interface (or compatible 
unit). Gold plated card-edge connectors ensure reliability. 
Use of the Western Digital WD1773 control ler, with all- 
digital data separation and write preconpensat Ion, means 
that no adjustments are required. The OHC has been designed 
to run at both .B9S HHi and 1.79 MHz CPU speeds. 
The 0MC controller Is available today, at a unit price of 
(JUS) (149. SO with RS-D0S 1 .1 . 8K buffer RAH, and either the 
Level 1 or Level 11 version of S01SK. For more Information, 
write, or call Dave Miens at (6D4) 2S5-4W5 (Pacific time). 



'66' Micro Journal 



October's? 



51 



Continued From Last Month 

Xbasic Xplained 

or 
Things you won't find in the documentation 

Copyright 1986 by 

R. Jones, Micmnics Research Corp., 

33383 Lynn Avenue, Abbotsford, 

British Columbia, CANAOA V2S 1E2 

& Computer Publishing, Inc. (CPI) O 1987 

The material in this article is copyright*! by Micronics Research Corp. A Computer Publishing. Inc. (CPI). and 
reproduction, in whole or in part, by any means is prohibited without the express written permission of the author and 
CPI. 

MAXIMUM LINE LENGTH 

Earlier on 1 mentioned that the maximum input-line length in XBASIC was 255 characters (not 127 as stated in 
TSC'i article). A 68MJ reader in Australia questions this, as he has tried several configurations of input-lines, and 
found that (depending on the nature of statements in the line) the maximum acceptable to XBASIC was a variable 
amount. I think the most he could get was a 149-character line - a long, long way from the supposed 2551 Perhaps I 
should have emphasizes that the maximum is 255, which is not to say that you'll always gel thai number per line. 

Let me elaborate. XBASIC has two 255-characier buffers - one of which (we'll call it "A') accepts characters as 
they are entered from the keyboard, and the other (well call this one 'B') is used to tokenise your inpul-iiiie and parse it 
before storing it into your main pr<»^. «m. Now, if you'll casi your mind back to the beginning of this series, you'll 
recall my example of t few pr : lUtive line-entries and their corresponding tolceni&ed lines, and how amazed we were al 
the disproportionate amoui., of code that saemed to be generated. Herein lies the key to the '255' problem. If, due lo 
the nature of the line keyed into Buffer A, the tokenising happens to generate lest code in Buffer B £.•-. ,l, »re is in 
Buffer A (and it can happen!) then you can fill up with 255 characters in Buffer A. On the other hand, if Butter A 
generates more code in Buffer B, then Buffer B determines the limit of 255 al which to cut off lokenising. Hope this 
makes it all perfectly clear! 

RANDOM FILES 

A few readers have written me on the subject of Random Files, which seems to indicate thai their use gives tise lo 
little difficulties now and then. Perhaps I can best illustrate the most common problem by reproducing the essence of a 
little program which appeared in the May 1982 issue of 68 Micro Journal. Here's the program : 

10 PRINT "FILE CREATION PROGRAM" 

40 DIM Q$(5) 

50 OPEN NEW "CHECKJTLE" AS 1 

60 FIELD »U 50 AS Q$(l). 50 AS Q$(2). 50 AS Q$(3),50 AS QJ(4),50 AS Q$(5) 

70 FOR 1 = 1 TO 5 

80 Q$(l) - " 50 spaces " 

90NEXTI 

100 DF - 200 

1 10 FOR 1 = 1 TO DF: PUT #1. RECORD I: PRINT I: NEXT I 

150 CLOSE 1: PRINT 

180 PRINT "DONE WITH FILE CREATION" 

Although this program may appear to be quite straightforward, it nevertheless demonstrates an incomplete grasp of 
random files and how to create them. So, at the risk of repeating stuff which most readers already know, we'll lake it 
from the beginning. But first, try entering and RUNning the program yourself. You should observe the program 
displaying the opening message, then a 1, followed by a long wail, then a rush of 5 more numbers, another wait, 5 
more numbat, and so on till it reaches a count of 200. at which time Line 180's message will be displayed. All well 
and good, il seems. But, if you have the means to examine the file on disk with DISKED1T, you'll find 200 records 
there. Tilled completely with 00's (NULs) instead of '20's (SPACEs). So what's wrong then??? 

Let's repeal the above, replacing the 50 SPACEs of Line 80 with a message such as 'Hello World" and pad out lo a 
total of 50 spaces. Again we would find a file of 200 records filled with '00's. even though Line 110*s job is to create 



52 October "87 '6B' Micro Journal 



200 records, each of which should consist of 5 sub-records composed of "Hello World". Why didn't (his happen? OK, 
random-tile tutorial coming up ... 

The program is good down to Line SO, where an instruction to open a file named CHECKFILE on Channel I is 
encountered. As a side-note, the file will not actually be opened until the first attempt to GET or PUT a record to it. 
Line 60 is also OK, where we define each record as being composed of, or FIELDed as, five sub-records of SO characters 
each. But, and what a big BUT it is. we then proceed in Lines 70 - 90 to completely cancel our Line. 60. You see, you 
can only put data into, or modify, the various FIELDs by means of the LSET or RSET statements. By simply defining 
the five *Q$'s with an ordinaiy LET (or implied LET), any prior definition using the same variables is effectively wiped 
out. Line 80 should therefore have read : 

80 LSET Q$(T) = " ... message ... " 

without the need of any trailing SPACES, as the FIELD statement would automatically pad out to the defined length 
of 50. 

Our program is quite workable at this stage, but why does the displayed count go in little spurts? The explanation 
is that when a random-file is first created. XBASIC allocates only one record to the file. Actually it reserves 3 sectors, 
but the first two are used for 'housekeeping' purposes. Sector 3 being our actual Record #1. So, when our Line 110 
(110 - 140 in the original program) PUTs the first record to the file, all available sectors have been used up, so the 
FMS section of DOS lakes lime out to extend the file a little before it can PUT a few more. The original program is, of 
course, PUTling absolutely nothing into each record - not even a sub-record, due to the cancellation of the FIELD 
statement - which accounts for the completely NUL file. All that the program is doing is to extend the file a little at a 
lime as the program loops from 1 to DF. 

A belter approach would have been to extend our file out to 'DF (that is. 200) records before we begin PUTting 
anything at all. To extend a random-file, we merely PUT to a non-existent record, and the file will automatically be 
extended to that limit. Thus : 

100 DF = 200: PUT #1. RECORD DF 

It will lake a little while to extend to 200 records, but then you should sec the numbers 1 to 200 just a-clicking up 
on the screen with no pauses between. 

EPILOGUE 

In bringing this discourse to a close, I'd like to raise a subject which should be of interest to a large number of our 
readers. As most of you know, I've bean studying the inner workings of XBASIC for some years now, working out 
patches for this and thai, or modifying it so it can call BEDIT (an XBASIC line-editor) directly from XBASIC itself. In 
fact, it was my initial patch to allow BEDIT to be called directly from XBASIC with the command 'EDIT thai prompted 
this series in the first place. All this has really been slop-gap, finger-in-the-dyke patching, so some time ago / decided 
to writ* my own BASIC - to be called RBASIC ('R' for 'Robert', my first name). 

It's reasonably complete now (in fact, it's been undergoing beta-testing for several months), and will almost 
certainly be so by the lime XBASIC XPLANATIONS goes into production. So. though I've obviously had to make il 
compatible with XBASIC, so you don't have to scrap all your old XBASIC programs, il differs considerably in several 
major respects. In general it incorporate* all those features which for so long I've wished XBASIC had, and at the same 
lime eliminates some minor annoyances, the end result being : 

1. It's been wiitlen directly in optimised 6809 code, instead of 'warmed-over' 6800 code. 

2. It doesn't have any of the known XBASIC 'bugs', such as the erroneous 'Missing Parentheses' or flawed 
floating-point malh. 

3. T has been added as a short form of 'INPUT, similar to '?' for PRINT 

4. It includes the function ARC, so thai ARCSIN, ARCCOS and ARCTAN may be implemented, though for 
compatibility's sake I've had to retain the oiiginal ATN function as well. 

5. CHAIN allows CHAINing to a file with any extension, though the file to which il CHAINs has lo be of the 
same type as that currently in memory, i.e., either all BAC files, or all BAS files, unless the extension .BAS or .BAC 
is specifically given, in which case il is possible lo switch from one type lo another. 

6. XOR (Exclusive-OR) logic -operator has been added lo allow more sophisticated logic manipulation. 



'68: Micro .loumal October's? 53 



7. APPEND command added to allow another program to be APPENDed to the end of the one currently in 
memory. This allows libraiy-files of useful .BAS routines to be created and called up as necessmy during new program 
development, for incorporation into the program. 

8. LIST has been expanded, not only to allow let's say 'LIST 100-' to UST from Line 100 through to (he end of 
the program, but il now allows commands such as 'LIST 100.200-300,700 to be implemented. The function of the 
latter is, I Chink, self explanatory. 

9. The 'FLEX' command has been replaced by a 'DOS' statement, allowing programs to exit gracefully under 
program-control. Thus statements of the form '100 IF X > 7 OOTO 300 ELSE DOS' are acceptable to RBAS1C. 

10. Similarly, the commands TRON and TROFP have been replaced by a single statement TRACE'. TRACE 1' 
rums the TRACE-mode ON, TRACE 0' ntms it OFF, while TRACE 125' causes the program to TRACE for 125 lines 
then tum itself OFF (maximum 254). This makes for a veiy powerful debugging tool, especially as the TRACEd 
Line-Numbers are now displayed horizontally, instead of merely one per line. Statements along the lines of the 
following may thus be inserted into a buggy program for testing : 

100 IF X > 7 THEN TRACE 200 or 100 IF A$ - BS THEN TRACE 1 

11. Most importantly, it includes a built-in line-editor with the following features : 

a. Instant recall of an erroneously-entered line which has just been 
rejeclad by RBASIC for some syntax error. 

b. Editing of any specified program line, ie EDIT 100. 

c. Full cursor-control, LEFI\ RIGHT, UP and DOWN. Why UP and DOWN, you 

ask? just in case you're editing a 255 character line, and wish to 
do some editing in the middle of the second displayed line. 

d. Express RIGHT/LEFT cursor positioning for moving quickly from one end 
of a line to the other. 

e. INSERT, DELETE and OVERLAY, plus SPLIT and MELD. SPLIT will (as its 

name implies) split a line into two individual lines at the cursor- 
point, usually at a colon. MELD, on the other hand, will meld, or 
join together, two successive program lines, with automatic deletion 
of the second-line's line-number, and its replacement by a colon in 
the expanded line. This, obviously, is only a brief outline of what 
can be done with this new Line-Editor. 

Plus several other features, such as : 

(i) being able to CONTinue after BREAKing on INCHS(O) 

(ii) being able to LIST a BAC file for amusement or informative 
purposes. 

(iii) bringing GOSUB into line with GOTO, in that it doesn't require a 

mandatory THEN preceding il in IF-THEN clauses. Now the statement 
IF A>B GOSUB 50' is equally acceptable. 

(iv) Just loads of other features . including some veiy powerful debugg- 
ing aids, which are detailed in RBASIC's accompanying Instruction 
article. 

Recently added is 'PDEL' to allow a command such as PDEL 100-200 to delete the named block of lines (with 
emb*Ll«d precautions to protect the User, of course). 

The RENUMBER command (now named RENUM) has also been completely rewritten, with all known bugs 
removed. Now it will correctly process lines containing statements such as '100 IF ERL = 75 GOTO 950', and also 
lines of the form '100 IF X = 7 GOTO 950' where line 950 is non-existent. It will not leave you unaware of the fact 
that your program will now GOTO a new Line 950 created by the RENUMbering process. Of course, the Precompiler 
has also had to be re-worked, so it will recognise and process all the new statements of RBASIC. However, this 
program has not been re-wiilten (only patched) as it appears to have no problems and has remained unchanged for some 
years, thanks to TSC's policy of producing only quality software. 

Keeping in mind that BEDIT, or other similar add-on Line-Editor, eats up lots of valuable memory-space, 
sometimes as much as between 1500 and 2000 bytes, you may be wondering just how long this new RBASIC is. seeing 



54 October '87 '66' Micro Journal 



thai ii include* the very versatile, and muck more powerful EDIT command, plus the extras mentioned above, such as 
ARC, and other features too numerous to detail. Would you believe that in spite of all these additional goodies it's still 
currently about 1000 bytes shorter than XBAS1C? In addition, due to improved algorithms, more efficient coding and 
so on, it executes a little faster than XBASIC. Time-comparisons indicate a speed-up of approximately 10% to 16%, 
depending on the function being performed. In response to reader feed-back, we intend to add as many features as 
possible, before marketing later on this year (1987). So if you've been concerned about some of the limitations of 
XBASIC, or are considering an 'add-on' line-editor (which only eats up vital memory), you should maybe hold off for a 
while. 

1 hope sincerely that you won't take this as a put-down of XBASIC. This has been a wonderful program (one of 
the best BASlCs around, in my opinion), but its days are numbered, especially as TSC has apparently moved on to 
better things (such as the 68020) and no longer seems to be supporting it. I've given up on just patching it, as the 
coding was gelling a little out of handl One can only go so far in adding extra floors lo a building, then there comes a 
lime when the project has to be scrapped, and a new strucluie built from the ground up. 

IN CONCLUSION 

I'd like lo hear from friends old and new if you have any ideas for incorporating into RBAS1C, though I'd still like 
to keep it as compact as I possibly can. My main problem is going to be a shortage of available code-numbers for ihe 
extra tokens, so I'll have lo give priority lo the most generally useful. 

So goodbyel 1 hope you've enjoyed reading this article as much as I've enjoyed putting it all together. 

** TSC, where used in this article, refers to Technical Systems Consultants, Inc. 

Editor's Note: RBAS1C U also being developed for the SK'DOS 68000 series and ihe MUSTANG-OS™ from 
Data-Comp. We will certainly let you know as soon as ii is ready for shipping. Beta testing is in progress now. Also 
watch for a new C compiler for SK*DOS and the MUSTANG-08. Inings are moving! 

DMW 

EOF 



FOR THOSE WH 




68 MICRO 
JOURNAL 



J 



Clearbrook Software Group (604)853-9H8 



CSG IMS is THE full featured relation- 
al database manager for OS9/OSK. 
The comprehensive structured ap- 
plication language and B + Tree Index 
structures make CSG IMS the Ideal 
tool for file-Intensive applications. 

CSG IMS for CoCo2/3 OS9 L1/2 (single usar) $169.95 

CSGIMStorOS9L2or68000(multlu*er) (495.00 

CSG IMS demo with manual $30 




MSF - MSDos File Manager for CoCo 3/OS9 Level 2 
allows you to use MSDos disks directly under OS9. 

Requires CoCo 3. OS9 L2. SDISK3 driver $45.00 



SERINA - System Mode Debugger for OS9 L2 



allows you to trace execution of any system module, 
set break points, assemble and disassemble code and 
examine and change memory. 

Requires CoCoS or Glmlx II. OS9 12 & 80 col. terminal $139.00 



ERINA - Symbolic User Mode Debugger tor 0S9 
lets you find bugs by displaying the machine state and 
Instuctlons being executed. Set break points, change 
memory, assemble and disassemble code. 

Requires 80 column display, OS9 L1/2 $69.00 



Shipping: N. America • $5. Overseas - S 10 
Clearbrook Software Group P.O. Box 6000-499, Sumas, WA 98295 

OS8 w « uirfTTjm o< Utoiri Bytmrn Oorp , MSOat a a tadwnarti at Mtcroofl Cotp. 



'66' Micro Journal 



October's? 



55 



f r^laccjfipHc As Sunmiued - No Guarantees j 



(F 



AT&T 7300 UNIX PC, UNIX V OS. 1MB Manny. 20 MB Hard 
Disk, 5" Drive. Inunui Modem, Maiu. BcM Offer Gcfi U. 

S+ Syitem with Cabinet, 20 Meg Hard Disk A 8" Disk Drive with 
DMAF3 Controller Board 1-X 12 Terminal S48O0. 

DAISY WHEEL PRINTERS 
Qume Sprint 9 - S900 
Qume Sprint S • $800. 

HARD DISK 10 Megabyte Drive -Seagate Model #412 5275. 

3 -Ekial 8* drive enclosure wiihpoweriupply. New in box. S 123 each. 

5 - Siement 8" Diak Drive . J 1 00 each. 

Tano Outpost II. S6K. 2 5" DSDD Drives. FLEX. MUMPS. S4M. 

TELETYPE Mode) 43 PRINTER • with aerial (RS232) interface and 
full A5CD keyboard . $250 ready to run. 

SWTPC SAW with MouxoU I28K RAM. 1-MPS2, l-Paialell Port, 
MP-09CPU Card - S900 complete. 

Tom (615) 842-4600 MF 9AM to 5PM EST 



I Want To Buj 

*68 DMA FDC. Price and details to 

Roger Steedm an 

RMB 9010 

Oroeo Hwy Sanfield 

3883 Australia 




NEW! 



Color 
Computer 
"NO Holt" 

Disk 
Controller 

Old you knew? 

. thst all Iho older floppy disk controller* 10* the CoCo oomplaiflly ite up land 
even hall) |ha 6809 processor during disk reads and writes? No wonder your 
keyboard la constantly "losing" characters! Or that your aerial port oiler gives 
you Garbage 

Unlvaah j/9vr CoCo'» paUntlelt 

Our new Oual Mode Controller (DMC) Implements s new "no hall" mode of opera* 
Hon so II can read from or wrlle to disk all by llaell. The 6809 la freed to process 
other tasks and respond to Iniernjpta. This la how 05-9 was meant to runl But ihe 
Radio SUack "hair mode of operation «a also reiatned to malniain full com 
paliblllly wllti ealallng non-059 aollware 

Oth«r DMC f»»lyr.»: 

■ works with original CoCo. CoCo 2, or CoCo 3 |Multl-Pak required] 

• no adjustments - alldlQHaldata separator and write precompensalton 
» gold plated card-edge connectors lor reliability 

• ROM socket takes 24 pin or 26 pin chlpa; dual DOS capability 

■ Radio Shack DOS 1 1 ROM Insialled 

• 6K bytes cache memory on board |3?K bylea optional) 

■ includes DP Johnson's SDlSK package specially mod I Hod for ihe DMC 

• fully assembled and lasted; (20 day limited warranty 

To •rden DMC controller wllli RSOOS 1.1 end SDISK {Level I or II) $148 50 plus SS 
S/H |$12 overseas). Terms (prices in SOS) check, nwney order, VISA 



(trademarks OS9 — Micro ware and MolOtOla) 



(604) 266-4486 (Pacific Time) 

Our ST 2900 SBC is aim avallaole, 

call or write lor calalooy price-list. 



~~ C<HN<OLOOIC^ 



2261 East 11m Ave., Vancouver, B.C., Canada V5N 127 



=^ 



!!! Subscribe Now !!! 
68 MICRO JOURNAL 

OK, PLEASE ENTER MY SUBSCRIPTION 

Bill My: MastacardQ VISA[~l 
Card # Exp. Date 

For 1 Year 2 Years 3 Years 



Enclosed: $. 



Name_ 

Street 

City 



My Computer Is: 



State Zip 



Subscription Rates 

U.S.A.: I Year $24.50, 2 Years $42.50, 3 Years $64 JO 
•Foreign Surface: Add $12.00 per Year to USA Price. 
•Foreign Airmail: Add $48.00 per Year to USA Price. 
•Canada & Mexico: Add $9.50 per Year to USA Price. 
•U.S. Currency Cash or Check Drawn on a USA Bank ! 



V/SA 



%z 



68 Micro Journal 

5900 Cassandra Smith Rd 

POB 849 

Hixson.TN 37343 

Telephone 615 842-4600 

Telex 510 600-6630 



mastercard 



J 



56 



October "87 



68' Mcro Journal 



K-BASIC™ 

The Only 6809 BASIC to Binary Compiler for OS-9 

FLEX or SK*DOS 

Even runs on the 68XXX SK*DOS Systems* 



,-..— ....... N 

Hundreds Sold at \ 
Suggested Retail: i 



0100.00 



I 



• 6809 - OS-9™ users can now transfer their FLEX™ 
Extended BASIC (XBASIC) source files to OS-9, com- 
pile with the OS-9 version and run them as any other 
OS-9 binary "CMD" program. Much faster than BASIC 
programs. 

• 6809 - FLEX users can compiler their BASIC source 
files to a regular FLEX '.CMD' file. Much faster execu- 
tion. 

• 68XXX - SK'DOS™ users running on 68XXX systems 
(such as the Mustang-08/A) can continue to execute 
their 6809 FLEX BASIC and compiled programs while 
getting things ported over to the 68XXX. SK'DOS 
allows 6809 programs to run in emulation mode. This is 
the only system we know of that will run both 6809 & 
68XXX binary files. 

K-BASIC is a true compiler. Compiling BASIC 6809 pro- 
grams to binary command type programs. The savings 
in RAM needed and the increased speed of binary 
execution makes this a must for the serious user. And 
the price is now RIGHT! 

Don't get caught up In the "Learn a New Lan- 
guage" syndrome - Write Your Program in 
BASIC, Debug it in BASIC and Then Compile 
it to a .CMD Binary File. 



For a LIMITED time 
save over 65%... 
This sale will not be 
repeated after it's 

over! * 

............ N 

SALE SPECIAL: 

$69.95 



■ 
I 
■ 
I 

i 
■ 

V, 



SPECIAL 

Thank-You-Sale 



Onfy from: 



c 



S.E. Media 



p 



i 



3900 Cassandra Smith Rd. 

Hlxsort, Tn 37343 

Telephone 615 842-6809 

Tefex 510 600-6630 



A Division of Computer Publishing Inc. 
Over 1,200 Titles - 68or>68(&68OO0 



* K.BASIC wiD iui wider 68XXX SK'DOS in onulain male far (he 680». 

•» * 
Pike vbjta to dinge wUkm mice 



'68' Micro Journal 



October's? 



57 



SK* DOS 

J7W G#o#fHT DOS ™ 1or 60000 *PPTk«1 ten i>n 

* induitrid Control 

* 8yi.o*0 Ut* 

* 6duc«iton»l Compuiinff 

* SchciCi'* Compudnf 
+ nHimW C/wrxhing 

* D«0*Ce><td Svttomi 

* Tu*nfciy Svtlvnn 

* DttaColFedtan 

* S> n ) *'Oo**'0C<y-VMt«ri 

* But on«o(ed Corripuwri 

* Grwhics WfrktUtlOfii 

* On«ol c-ltlnd Syitami 

* Affvantad Hobbytt UW 

Sit* DOS n a wgU- mar ** oot»»('"9 w>t*m 'a* •on> v ut*ri v iing Motorola 32 bit C**U» 
mch oft (»H 6011)6. 6BCCO, SflOlO. *nd fiflOTQ M pw«1m Itw P©*»» ol i f\*U DOS, yd ii 
simpte and mw lo use, and w*A f«o on fy*f*ym from 3JK to 16 magabyin. Pa- ana 
$K *OOS a aawty imp(am«nitd on a o#w tyrt«rr\ wr# call 41 "Th» Cnnrc OOS" *f>Ch 
«1lo*v« piooramt writ ten lurom fVlttrft la be run on many olhtft 

SK«DOSc<Vn*» wrtti ovrWcomiyrdi and «V»t*mpcoorimi, including a 6909 tmulilor 
wrhech ■llorteflK SK«DOSlonjn •wife*, on Programnndlanguaon dtvt).op«J lo* 6809 
SKfrDOS and oUhtt fyrtsmL Axwn*>«n, «j.i<xv and hiahar laval lanojaov fuDOOM art 
•vailabla fnovn thvd party ioltwar« vondon and (hroufjh DubtK dom am iofrw»r t 

SK-OOS it wMtabla tor untjtocooyty (Mate* u*Afl m<i «OEM l-cenvrnj &nol v coiva 
con J124finp»if» as to avatlabta «y ttami|< EKiramaty amactrwOEM Iromvnv tavmtara 
aJw available An optional ConhawrttKW Kit tont*«ni idrUtM ConhQtf niton Manual 
and two it>*i ol wu-x* ooda (or tytwn fdvOtat^on. including towrft cod* lor a ty*t*m 
monilor/dafJUB BOM »txt ot*a» p/op/arfif uMful lor adaori^g SK*OOS to "rw lY.wrtit 

SK-DOS 



<i trstiabt* ttotn 



Star-K 



..SOFTWARE SYSTEMS CORPORATION 

»0 SOX JOS MT KISCO. NV 10M» iltlHOlll 
T€LrX5lO«)l«7;4 



INDUSTRIAL PASCAL FOR 68000 AND 6809 

PCSK Is a package that generates code lor a 66000 series processor 
running on a 68000 development system it includes the compiler, 
assembler, linker, host debugger, target debugger, and screen editor, 
all Integrated together and controlled by a menu driven shell program 
Source code rs included lor the runtime library and many ol the 
utilities Host operating systems supported are OS-9/68000 
(Microware). POOS (Eyring Research), and VEflSAdos (Motorola) 

PXK9 is a package that generates code lor a 6809 processor running 
on a 68000 development system includes all ol the features ol the 
PCSK package above, except tor the host debugger Host operating 
system is OS-9/68000 

I WANT IT. WHERE DO I GET IT? 

For more Information on either ot these two products please contact 
Certified Soltware, South East Media, or one ol our European 
Licensees 



OEM LICENSEES 

Gespac sa. 3. chemin des 
Aui* CH-1228 Geneva /Pian- 
tes-Ooales. Switz TEL (022) 
713400. TLX 429989 

PEP Eleklronik Systeme 
GmbH. Am Xloslerwak) 4. 
D-8950 Kauibeuren. west 
Germany TEL (08341) 8974. 
TLX 541233 

Ellec Eleklronik GmbH. 
Gallleo-Galllei-Strasse. 6500 
Mainz 42, Posttach 65. West 
Germany TEL (06131) 
50031. TLX 4187273 



DISTRIBUTORS 
R C S Microsystems Ltd 
141 Uxbrioge Road. Hampton 
Hill. Middlesex. England TEL 
01-9792204. TLX 8951470 
Or Rudoll Kell GmbH. Por- 
phystrasse 15. 0-6905 
Schrieshenn, West Germany 
TEL 062 03/6741. TLX 
465025 

Eisott AG. Zeigweg 12. 
CH-5405 Baden-Daettwn 
Switzerland TEL 
056-833377, TLX 828275 
Byte Studio Borken. Buten- 
wall 14. 0-4280 Borken. 
West Germany TEL 
02861-2147, TLX 813343 



CERTIFIED 616 CAMINO CABALLO NIP0M0. CA 93444 

SOFTWARE TEL (805)929-1395 TELEX 467013 

CORPORATION FAX (805) 929-1395 (MI0-8AM) 



SOFTWARE FOR 680x AND MSDOS 



SUPER SLEUTH DISASSEMBLERS 
EACH S88-FLEX *1 01 -OS/8 SIOO.UNIFLEX 

OBJECT-ONLY v.nlont EACH ISO-FLC X OS9 COCO 

ntaractnsty oansme tourta on 3a* KB tM. «*aja nr. b«xar» xMng 

tpKdy e«00.1.2.3,5.B.».«SO! van-on of ZeovSOM.5 iramon 

Q&9»wrormioBfiin PUBtrnei aoetJWtlllil 

COCOOOSnUlbtolneSOO.lJi.SJ.S.aWQZ vwikm (not ZBOaoaO.S) only 
NEW: ««010 dlulMftiblai *100-F1 EX.Od7S.LINIPLEX.OSi9-*«K.MSDOS 

CROSS-ASS MBLERS WTTH MACRO CAPABILITIES 
EACH f50-FLEX,OS(S.UNIFlEX,MSDOS.UN1X 3/S100 ALUS200 
«>«iiy 1 80..eso) «« 1 eeo* seas taaa.za 7»o ewe eos 1 was wo > jmoo 

modular sras -rwamblsni « C, van roaoVunioerJ dWM NOW OSMW 

■ma lor arJiManat $90 Mch. SlOOtof 3 «OOk»«l 

OEBUOOMO SMULATC4«RjnPC<HJLAna-BlTMICROPHLXZSSDRS 
EACH S75-FLEX tlOO-OS/t SSO-UNIFLEX 
0»jeCT-ONl.V v*f«lgfie: EACH ISO-COC O FLf X.COCO OSVO 
rto.«-trv«<> ilmJaM vnxmotn. ndurh aammmOf tarmanng. ami, Mtng 
•OfKily tor 6800(1. (MrSSOS. SMS. teM OS/8. ZM nEJf 

ASSEMBLER CODE TRANSLATORS FOR 851)2, 8800ri, 6808 
esoe u eaos m-n.f.% hwjsvb sk-unifiex 

eeoo/i is eaos « eeo* is prMttavwi ijo-flex 17vos,-b mo-uniflex 

FULL-SCREEN XBASIC PROGRAMS mm curw cwtvci 
AVAILABLE FOR FLEX, UNIFLEX, AND MSDOS 

DISPLAY GENERATOfWOCUU EMTOR »S0 w'MurU , »5 wltlMKll 

MAILING LIST SYSTEM ItX WlUUiet. ISO ntHhoul 

WVE ffTOflY WITH MR P 1 1 00 » >DK r c». IH » 1 Ih oui 

TAnAArUSASP^AOSXET 1 100 Mm>, ISO w***l 

CHSK AND XBASIC Lmunr PROGRAM LIBRARY 
tSO-FLEX t3r>UNIFLEX/MSDOS 
XX (MX Hdm. nt ifeaoorr. munurt nf* mlniQ 00 01* (oru, 
mi|riirn-r ol BASIC invw^. inl OXSC pnmm. «|c 
rovFLEX inn retch aorl and w ■■«■■■ om« 

CMOOEM Tfi UTTMUtftACATIONS PROGRAM 
$100-FLEX,OS/9,UNIFLEX,MS-OOS,OS/9-S8K,UNIX 

OBJECT-ONLVMrtloni EACH ISO 

nv4w wWi kmW mod*. «• nnaV. MDOEM7. XON XOFT. Mc 

to COCO w«« navCOCa 0>u« IX CQCD mkn Don MP B 2400 EHud 



DISKETTES & SERVICES 

5.2S" OISKETT S 
EACH 10-PACK 512.50 SSSDSSDODSDD 

■nbmli.piM 1O0%ow*»|. Mt> T|N«>|adM«. nutmnoi an) t 



ADOmOMAL SERVICES FOR TME COUPVTMG COMMUNrTV 
CUSTOMIZED PROGRAX4HWG 

w« w* aama any of ffw programs aaa gt at tf in ih* aoV»> teaman or m aur 
diooHot tor tpMaamad aattrnav ua* or ko ao%w naw proanm: tf« diarpa 
lor aao*i oaajn^faton oa^vxh upon ffv n>si\aubM7 ol rrvrrajnaeom 

CONTRACT PROGRAMUB4G 
w« wM awtm nsw p^aama cr morJTy a^raang (fod/v** on a oartjad oaa*. 
> larwaaa nsva pn»«»«i lor ova» t^tni yaara. tia a»n»«ari onmncx w 
ftaws)|jay%affaaanrsraaiFiV» l ' l »a>rira^f W aaP [ aju'aT m)ai ol 



noaaa ol n»«»T»*»%. noUkv (JEC. EM rjrj ta> AT »T. ana fral 
papuur UinrM ol mnransvvn. nckong BlOOVt. EMM. MO. BSOJ. 

BfXXXL usVq meal apprcenka) la^iaaa anrjapvaB% ayaaFm. on afffcr* 
rangtif nui irorti Urga I aan 1 irKMm to atigra rjoars m rt i oiwt . 
rna tfiji lor cant act vivanawaj « inry by *l* how or by ma laak 

CONSULTING 
m* ofav a i*rda rajaaj of buanas ana ao-nral cmraavaj aravcaa, aio\xft^ 

•amva.arMca.varwo, and aoiorv 00 any i»c -*a«i ti o»hiiv 



Computer Systems Consullsnls, Inc. 

1454 Latls Una. Conyers, GA 30207 

Telephone 404.483-4570 or 1717 

Wa lake orders at any lima, but plan 
long dlacuaaiona alter 8. If possible. 

Contact ua about catalog, dealer, dlacounta, and services 
Mosl programs In source: give computer, OS, disk elze. 
25% of) multiple purchases of ssme program on one order. 
VISA and MASTER CARD accepted; US funds only, please. 
Add GA salea tax (H In GA) and SS shipping. 
(IJ«ir^CXaiiTiiy»wjj>»a»»GoraJanarOt3rS>Siiiaa]|.COOOTarvv>«OCBI(kj»ai 



5« 



October '87 



■68" Micro Journal 



THE 6800-6809 BOOKS 

..HEAR yt. HCAR 



OS-9" 
User Notes 



By: Peter Dibble 



The publishers of 68' Micro Journal are proud Co make 

available the publication of Peter Dibbles 

OS9 USE! WOT IS 

laformatlon for the BKGUTHER to t be PRO, 
tegular or CoCo 0S9 

Using 0S9 

HELP. HINTS, PROBLEMS, REVIEWS, SUGCESTtmNS, COMPLAINTS, 

059 STANDARDS, Generating a New Bootstrap, Building a 

new System Disk, 0S9 Users Croup, etc. 

Program interfacing to 0S9 

DEVICE DESCRIPTORS, DIRECTORIES, "FORKS", PROTECTION, 
"SUSPEND STATE", "PIPES", "INPUT/OUTPUT SYSTEM", etc. 




rrograaslBg language* 

Assembly Language Programs and Interfacing; Baslc09, C, 

Pascal, and Cobol reviews, programs, and uses; etc. 

Disks Include 
■o typing ail the Source Listings la. Source Code and, 
where applicable, assembled or conplled Operating 
rro|riil. The Source and the Discussions in the 
Columns can be used "as is", or as a "Starting Point" 
for developing your OUN more powerful Programs. 
Programs sometimes use multiple Languages such as a 
short Assembly Language Routine for reading a 
Directory, which is then "piped" to a Baslc09 Routine 
for output formatting, etc. 



BOOK $9.95 

Typeset — w/ Source Listings 
O-Hole Punelied: B * 11) 
Deluxe Under -------- 



55. SO 



All Source Listings on Disk 

1-8" SS, SD Disk S14.95 

2-5" SS. DO Dlaks $24.95 



FLEX™ 
USER NOTES 

By: Ronald Anderson 

The publishers of 60 MICRO JOURNAL are proud to 
make available the publication of Ron Anderson's fUU 
OSIB NOTES, in book form. This popular monthly column 
haa teen a regular feature in 6B' MICRO JOURNAL SINCE 
1979. It has earned the respect of thousands of 
68 MICRO JOURNAL readers over the years. In fact, 
a column has been described aa tlie 'Bible' for 68XX 
users, by some of the world's leading microprocessor 
professionals. The most needed and popular 68XX book 
available. Over the years Ron's column haa been one of 
the most popular In 68 MICRO JOURNAL. And of course 
66 MICRO JOURNAL is the most popular 68XX magazine 
published. 

Listed below are a few of the TEXT files Included in the 
book and on diskette. 

Alt TEXT files in the Book are on Ihe disks 



LOGO CI File load Program (o oftsel memoiy — ASM PIC 

MEMOVE C t Memoiy move program — ASM PIC 

DUMP Cl Pnnler dump program — uses LOGO — ASM PIC 

SUBTEST C1 Smutation 01 6800 code to 6908. snow difference? — ASM 

TERMEM C2 Modem input lo disk (or other port input to disk) — ASM 

M C2 Output a tile to modem for another port) — ASM 

PRINT C3 Parallel (en hartcad! printer driver — ASM 

MODEM C2 1TL Output to CHT and modem (or other port) — ASM 

SCtPKG C1 Scientific math routines — PASCAL 

U C» Mini-monitor, disk resident many useful functions — ASM 

PRINT C4 Parallel printer driver, wiltiout PFIAG — ASM 

SET CS Set printer modes — ASM 

SETcWSl CS Set printer modes — A-8ASC 

NOTE: .CI..C2, etc. -Chapter I, Chapter 2, etc. 

•♦Over 30 TEXT files included Is ASM (assembler)-PA5CAL- 
PIC (position independent code) TSC BAStC-C, etc. 

Book only: $7.95 + $2.50 S/H 
With disk: 5." $20-90 + $2 50 S/H 



With disk: 8" $22.90 + $2.50 S/H 
Shipping A Handling $3 .30 per Book. $2 30 per Disk set 

Foreign Orders Add $4.30 Surface Mail 
or $7 00 Air Mail 

If paying by check - Please allow 4-6 weeks delivery 

' All Currency in U.S. Dollars 

Continually Updated In 68 Micro Journal Monthly 

Computer Publishing Inc. 

5900 Cassandra Smith Rd. 

Hixson, TN 37343 



1 



"FLEX (a a trademark of Technical Systems Consultants 

"0S9 is a trademark of Mlcroware and Motorola 

"68' Micro Journal la a trademark of Computer Publishing Inc. 



(615)842-4601 

Telex 5 106006630 



'68' Micro Journal 



October*? 



59 



w9 B «7 KOFTWAKl 

L1 UTILITY PAK— Contains all programs formerly in 
Filter kits 1 & 2, and Hacker's kit 1 plus several 
additional programs. Complete "wild card" file 
operations, copies, moves, soils, del, MACGEN shell 
command language compiler. Disassembler, Disk 
sectoredit utility, new and improved editions, approx. 
40 programs, increases your productivity. Most 
programs applicable for both level I & II 6809 OS-9. 
$49.95 ($51.95) 

Call or send Self Addressed Stamped Envelope for 
catalog of software for color Com puterOS-9 and other 
OS-9 systems. 

BOLD prices are CoCo OS-9 format disk, other formats 
(In parenthesis) specify format. All orders prepaid or 
COD, VISA and MasterCard accepted. Add $1.50 S&H 
on prepaid, COD actual charges added. 

ss-soc 

MEMORY LIQUIDATION SALE! 

(While Supply Lasts) 

1 MEGABYTE RAM BOARD 

Full megabyte of ram with disable options to suit any 
SS-50 6809 system. High reliability, can replace static 
ram for fraction of the cost. $3 99 for 2 Mruor $439 for 
255 M hz board assembled, tested and fully populated. 

2 MEGABYTE RAM DISK BOARD 

RD2 2 megabytes dedicated ram disk board for SS-50 
systems. Four layer circuit board socketed for 2 
Megabytes) Special sale price of $399.00 includes only 
256k of ram installed (you add the rest), includes OS-9 
level I and II drivers for Ram disk, (note: you can re- 
boot your system without losing ram-disk contents). 
(Add S6 shipping and Insurance.) 

Please call for answers to your technical questions 
concerning these products. 

D.P. Johnson, 76SS S.W. Cedarcrest St. 

Portland, OR 97223, (503) 244-8152 

(For best service call between 9-11 am Pacific time.) 

OS 9 is a trademark ol Microwave and Motorola Inc. 
MS. DOS is a trademark ol Micro toft Inc 




DATA-COMP 

SPECIAL 
Heavy Duty Power Supplies 

For A amlted tlma our HEAVY DUTY SWTCHWG POWER 
SUPPLY. These are BRAND NEW units. Note that thus* 
prfcM are tea than 1/4 the normal price tor these high 
quality unKs. 
5900 C^jaanrire 9mtt> Bd, Moon, Trt 37343 

Telephone 615 842-4600 Telex 510 600-6530 

Make BtsAert 

Size 10.S x 5 x 23 inches 

Including heavy mourning bracks and haftanfc. 

RaCng: in 110/220 vote ac (soap change) Out 130 was 

Ouqao: +5v • 10 amps 
+12v . 4.0 ampi 
+12v - 2.0 amps 
-I2v . 05 amjB 

Maartg Caraxr Tcnruns) snip 

Load Reaction: Aiaomanc short cacuil recovery 

SPECIAL: $59.95 each 

2 or more $49.95 each 

Add: SJSO arfi S*H 

Make: Bufichert 
Size 10.75 x 6.2 x Z25 inches 

Rating: 1 10/220 ac (strap change) Out 81 walls 

Outpis +5v • 8.0 ampa 
+12v . 2.4 ampa 
+I2v . 2.4 amps 
+12v-ZI ampj 
-12v - 0.4 i 



Mating dmaas Mole* 

Load Reaction: AvaomMk shurl canal marvrry 

SPECIAL: $49.95 each 

2 or more $39.95 each 

Add: S7 X SAI cadi 



5900 Cassandra SmHh Bd, htxao\ Th. 37343 
Tetephone 615 842-4600 Telex 510 6XXX63) 




68000 68020 68010 
68008 6809 6800 

Write or phone for catalog, 

AAA Chicago Computer Center 

120 Chestnut Lane — Wheeling IL 60090 
(312) 459-0450 



Technical ConiutUrilon available mcnl weekday! Irom 4 PM to S PM CST 



60 



Ocwbeffl? 



'68' Micro Journal 



Stop! 

Get a 25 Mega- 

Byte Hard Disk 

practically FREE 

only 1C 

•Be Sure to Consider the 

SPECIAL MUSTANG-08/A 

10 Sale on outside 

back cover 

*This is exactly one cent more than the price of 

the same system - with two floppies - for one cent 

more you get one floppy and a 25 MegaByte Hard Disk with the faster 

CPU board, additional serial ports and improved clock! 
includes Professional OS-9™ Version 2 and the $500.00 C Compiler! 

Remember - When it's over, IT'S OVER! 

We don't know how long this very, very low price can be maintained, don't miss it! 

Data-Comp Div. - CP1 

68' Micro Journal October ^7 61 



INDUSTRIAL COMPUTER SYSTEMS 

68008 - 68020 VME STD SBC 
STD BUS I/O OS9 

BILL WEST INCORPORATED products and services tec intended for 
industrial mainf microcomputers who are looking fori supplier prepared 
to provide complete engineering end technical support- We configure 
systems wilh com p owenti and software selected ordeiigned to meet «pecific 
customer requirement*. We specialize in solving industrial I/O problems. A 
full range of services is available including system specification, integra- 
tion, and installation, hardware deaign and production, and system and 
application programming. 

SYSTEMS 
BILL WEST INCORPORATED provides microcomputer systems ton- 
f iguiedlo meet the needs of paiticular customer applications. Tliese systems 
use 68000 family processors and the OS9(ud) opeiating system. We design 
and configure systems based on VME bus, STD bus, and single board 
computers, with processor* ranging from the 6809 to the 68020. Disk based 
and ROM based systems are suppoiicd. Systems for development and target 
applications can be supplied. 

I/O EXPANSION 
The STD bus is an excellent WO expansion bus. Many off-the-shelf 
interfaces are available, from simple parallel interfaces and intelligent 
communication con tro lien to pneumali c valves and radio receivers on catd. 
BWI interfaces the STD bus to system* via the Motorola I/O channel, the 
SCSI interface, and ARCNET. The STD bus maybe ccrtftguicd as a simple 
expansion bus, an intelligent subsystem, or a remote I/O syium. 
MACINTOSH AND ATARI ST EXPANSION 
Expansion slots may be added to Maoinlosh(tm) or Atari ST(un) systems 
using the STD bus- Connect an STD expansion bus via the SCSI port, and 
use any of the wide vaiictyof STD bus interface cards. 

BILL WEST INCORPORATED 

174 Robert Treal Dr., Miiford Connecticut 06460 

203 878-9376 



TM 



ML/I 

A MACRO PROCESSOR 

FOR 

POWER USERS 

Now available for generic SS-50 Bus systems 
Soon to be available for trie Macintosh™ 

This is a general purpose text-replacement macro processor, not tied 
to any particular editor or programming language. It operates on any 
kind of input text and replaces text as indicated by user-written 
macros. 

The SS-50 Bus version is written forthe FLEX^ope rating system and 
is furnished on 5 1/4' SS/SD 35 tpi floppy disks. 

Source code for trie SS-50 Bus version now available, at extra etiarge. 

ML/I (FLEX 6809) $75.00 

ML/I (Macintosh) Inquire for cost & availability 

Sorry, no credit cards presently accepted. 

Cognitive Engine Corporation 

34 Atlantic Street 
Lynn, Mass. 01902 



68 MICRO JOURNAL 
Reader Service Disks 



'IJfetime, 



Disk' 1 Filcsoft, Minicat. Minicopy.Minifms. 

••Poetry. ••Foodlist. "Diet. 
Disk- 2 Diskedil w/ insL& fixes. Prime. 'Pnnod, 

••Snoopy. "Football. ••Hexpawn,»*ljfelime. 
Disk- 3 Cbug09. Seel. Sec2. Find. Table2, Intext. Disk- 

exp, 'Diskiavc. 
Disk- 4 Mailing Program, •Finddat, 'Change, 'Testdisk. 
Disk- 5 •DISKFTX l.*DISKFTX2. ••LETTER, 

••LOVESIGN. ••BLACKJAX. "BOWLING. 
Disk- 6 ••Purchase Order, Index (Disk file indx). 
Disk- 7 Linking Loader, Rload. Harkncss. 
Disk- 8 Cncst. Ijnphcr (May 82). 
Disk. 9 Datecopy. Diikfix (Aug 82). 
Disk- 10 Hone Accounting (July 82). 
Dlsk-11 Dissembler (June 84). 
Disk- 1 2 Modcm68 (May 84). 
Disk- 13 *Inilmf68. Testmf68, •Cleanup, •Dikalign. Help, 

Dale.Txt. 
Disk- 1 4 •litis, *Test, *TennioaI, 'Find, •Diskedil. Intl. Lib 
Dlsk-15 Mod em 9 + Updates (Dec. 84 Gilchrist) to Modem9 

(Apiil 84 Com mo). 
Disk- 16 Copy.Txt, Copy. Doc, CatTxl, Cat. Doc. 
Dllk-17 Match Utility. RATBAS. A Basic Prrproc .csor. 
Disk- 18 Pane. Mod, Siac.Cmd (Sept. 85 Armstrong). CMDC 

ODE. CMD.Txt (Sept. 85 Spray). 
Disk-19 Clock. Date. Copy. Cat. PDEI.Asm & Doc., 

Erron. Sys, Do, l-og.Aim & Doc. 
Disk -20 UNIX Like Tools (July & Sept. 85 Taylor A 

Gilchrist). Dragon.C, Grep.C. US.C. FDUMP.C. 
Dlsk-2 I Utilities & Games - Date, life. Madness. Touch, 

Goblin. Surshot, & 15 more. 
Disk- 22 Read CPM & Non-FLEX Disks. Fraser May 1984. 
Disk- 23 ISAM. Indexed Sequential file Accessing Methods, 

Condon Nov. 1985. Extensible Table Diiven. Lan 

guage Recognition Utility, Anderson March 1986. 
Disk- 24 68' Micro Journal Index of Articles A Bit Bucket 

Items from 1979 - 1985, John Current. 
Disk-25 KERMIT for FI.EX derived from the UNIX ver. Buig 

Feb. 1986. (2)5- Disks or (l)-8" Disk. 
Dlsk-26 Coropacta UniBoard review, code A diagram. 

Burlison March '86. 
Dlsk-27 ROTABrr.TXT, SUMSTEST TXT. CONDATA.TXT. 

BADMEN.TXT. 
Disk -28 CT-82 Emulator, bit mapped. 
Dlsk-29 ••Star Trek 

Disk -30 Simple Winchester, Dec'86 Green. 
Dlsk-31 ••• Read/Write MS/PC-DOS (SK'DOS) 
Disk -32 Hier-UNIX Type upgrade - 68MJ 2/87 



NOTE: 
This is * reader service ONLY I No Warranty is olfered or implied, 
they are as received by 68' Micro Journal, and are for leader 
convenience ONLY (some MAY include fixes or patches). Also 6800 
and 6809 programs are mixed, mm each is fairly simple (mostly) to 
conven to the other. Software is available so cross -assemble all. 

• Denotes 6800 • ♦• Denotes BASIC 
••* Denotes 68000 - 6809 no indicator. 



Specify 8" disk $1950 
5" disk $16.95 



Add S/II - J3.S0 
Overseas add: S4.50 surface • $7.00 Air Mail. USA Dollars 

68 MICRO JOURNAL 

PO Box 849 

Hixson, IN 37343 

615 842-4600 - Telex 510 600-6630 



62 



October '87 



'68' Micro Journal 



IF YOU NEED IT, WE'VE GOT ITI 
(OR WE'LL MAKE IT) 

Yes, PC RIPHERAL TECHNOLOGY sltfl sells the FD-2 lor SS-SO Bus Com pulers And. if you don'l 
need it, we sell other products from Single Board Computers to Systems which should lit your 
requirements Custom Hardware Design is also available Here's a small sample ol what we ofler 



FD-2 FLOPPY DISK CONTROLLER 

• Controle up to louf 6'b" Drives 

• Rum in 1 o< 2 MHZ Systems 

• Can be evntiguied tor either 4or 16 
. Addresses pet I/O Skit 

ISS30 of SSioC) 

• Uses WD2797 Controller Chip 
Icompatiblewilh 1771/179X 

Controller Chip| 

• Hardware and Software compatible 
wilh SWTPC DC 4 controllers 

• 6800/8809 Flea Drivers available 

• SK'DOS Operatlnp, System or 
OS9/6809 Oliver package 



T , : mm 



PT69-4 SINGLE BOARD 
COMPUTER 

• 6809E Processor/I MHZ Clock 

• Tour RS232 Serial Ports uairo, 

essos 

• Two 6-Bil parallel Porta using 
6821 PIA 

• Time-Ol0ayCIOc*IMCI46818) 

• SBK ol user RAM 

• 2Kor 4K of EPROM using 2716 
or 2732 

• Double Sided/OouDle OenSily 
Floppy Controller 

• Can Read/Wme Radio Snack 
OS/9 (Diskettes 

• Board Sue 5 8" X 8 2 



h cai m ef * 



t **- 



** 



MONTHLY SPECIAL** 

PT68K-1 10 Mhz $350 

Regular Price (495 



PERIPHERAL TECHNOLOGY 

1480 Terrell Mill Road. Suite S70 

Marietta. Georgia 30067 

<404) 964-0742 Telex « 880584 

VISA/MASTERCARD/CHECK/COD 



SYSTEMS 

• Floppy or Winchester Versions 

Availed* 

. Stiibum son seo9 Smote Surd 
Conputo o> SflCQS Board 

» Win be contguied lo meet your 
Requirements 

■ OS9 S SK-DOS Operating Syster 
> Call or write for system 
configurations 




Catalogues Available Upon Request 



XDMS-IV 

Data Management System 



Kiicifiiiic Mpon 




Html 

ii<i 

ii ... «« 



'iltiii 


> 
> 


; 


I 


% 


/// 




:::;:: ») 


x±j 


Hit 
llitfi 

■ Mil 
• III 

mm 

•n iii 

im 

i*»t 

MM 

-MM 




B * ■ r 
II* 

•* 

Lltl 

l«ll*> 

'•* 

III* 
■ ••(I 
1*1*1 




«■- 

■ c - , i 
Mtrt 

■ »■• 
m<m« 
■t-i.. 

■ Ill 

Hint 

let 




tnvfM 
lift 

•-•H 
••1*1 





f itmi a 


ft • «4 I *«. 




\^» *y 


V^iuntfi^y 


■sin 


■ It! 




if 


ill! 




Hill 


• ll 




■Ml* 


■ 41 > 
iimi 
■■« Hi 





ft0MmWt 

IHt'l 
■"-■«<■ 
Mtftltl 

l>« 


> 


■MIMI 

. ■*« ii 

[Mil 
'411 
IKilK 
■*■ tPP 
■li'llll 


1 



Save $100.00 - Limited Time 
Regular $350.00^1<wrOiT^ 

$249.95 



Twhaksl telephone tuhtsnoe Ttl »H M1-3SSI (Evening-) 

fcl 1 .>..V - TtcnlcH SyttaiM Cerwvlunli, SK'DOS™ STAR-KITS Corp. 



FOR 6809 FLEX-SK-DOS(5/8") 

Up to 32 giaa^a/neids per nnrll Up la UifniKto Sod amzl Up to 1024 byte nxndsl User 
defined eoan and pom contrail Procnaa files! Form (ileal GondinOTvtl eieaaiml ftn>u 
chaining) Upward/Downward 81a tirikuujt Hie jramngt Random file virtual paging I Buik iff 
isilitjasl Bulk in ui line "Citarl Fully tssnan nrierud I Enhanced fomul Boldface, Double 
width. Italics and Uodertine supported I Written in cetwpaes et/ueoind usanblot bscgratad for 
FASTurxusml 

XDMS-IV Dela Management System 

XDMS-IV |i ■ brand new approach to data management. It not only nmniia uacn ui 
deacrttm, enter and retrieve data, but also to erocaw. entire filet praducetg oiauvniaed rejponi. 
■am ditplayi arid file output. PruaninA can coraiji of any dfiutof standard high level 
tmaiaat including record and field asuawn, larong and aggregation, lookup* in other filca, 
tpecia) p mnw aing of record aubacaa. custom report formatting, totaling tod a ub t atsli na,, and 
frtwittrwr- of up to three (elated funs as a "duthaan" on user defined output rettnytt. 
POWERFUL COMMANDS) 

XDMS-IV conAjoaj the fUAerionaliiy of many popular DBMS software systems with > new easy 
to use commend set into a tingle integrated package. We've included many new feature* and 
connnands including a ant of general file ttililis. The pn i raa i n g corananda ajc lopui- rWu- 
Ouqpua (IPO) cnannd which allows akocst instant implenersadbn of a pro^ deuan. 
SESSION OBIENTEDt 
XDMS-IV ia aaaaion arianled. Enter "XDMS" and you are in maunt ensmand of all the 
fcaunv. No mora wanlnf for a eommaed to load in from didst Many commanda are ena^diiLc, 
auch as OieATE (file defimnoiX UPDATE (file odaor), PURGE and DELETE (irolkiaj. 
Cthexa are ea-cssaa "»■"** which are used to erase a uacr pnaoeBB which ia executed with a 
RUN command. EiaW may be cased bio a 'process* file which iiuecuua) byanEXECuTV 
pm»i Plum— may caecuss other pmewaaea, or Ibaojadvea, cdhcr crjodsoaavally or 
laacDBBUxaanafly . M a t aaa and acnen prompu are easily gale a*, and entbe uacr ■ceakaisona can be 
run wehcu aver krvina XDMS-IVI 
ITS tASY TO USES 

XDMS- IV eeeps data niMtam anpts) Rather than aeaiaji a mnptei DBMS which bidet the 
true carum of the data, we 'opt XDMS-IV fDs orsaiad. The user new of data nrits'ariatunt ;, 
prossDtod Hirnptrn and acjeen output, while the aclual diu rondea in easy to maintain filet, Thu 
aspect p*^w;i« asRomisBl pnwanuaioB and reporta wuhout oompjex rndkruucun of the dalabaie 
files and atruccure, XDMS-IV may be uaed for a wide range of aPPucaOcas ftotn rim pic mud 
otanaa-eonu ,ysvma (.d ihia a u j, urrenusy .. ) to int"<r*ied database systems (aider enuy, 
..)■ The etasubuiunt are 



Visa & Master Card Excepted 
Telephone: 61S-842-4601 or Telex: 510 60tV6flJW 
Or Write: S.E. Media, 5900 Cassarxfra Smith RrL, 
Hlisofi, Term. 37343 



'68' Micro Journal 



October '87 



63 



GMX MICRO-20 PRICE LIST 



SBC ACCESSORY PACKAGE IMZO-AP' 



MICRO 20 (12.5 MHz) W/1 SAB $2565.00 

MICRO 20(16 67 MHz) W/1 SAB :.... J2B95.00 

MICRO 20 (20 MHz) W/1 SAB $3295.00 

68881 12 5MHz Floating PoinlCoprocessor $ 195.00 

68881 16 67MHz Floating Point Coprocessor... J 295.00 

68B81 20MHz Floating Point Coprocessor $ 495.00 

MOTOROl A 68020 USERS MANUAL -..$ 18.00 

MOTOROLA 68881 USERS MANUAL S 18.00 

.11690.00 

The package includes a PC-style cabinet with a custom backpanel. 
a 25 Megabyte (unformatted) hard disk and controller, a iloppy disk 
drive, a 150 watt power supply, cooling Ian, panel mounted reset and 
aborl switches, and all necessaiy internal cabling (For use with 
SAB-9D serial connectors only } 

2nd 5 '80 FLOPPY & CABLES FORM 20- AP. ADD S 250.00 

SECOND 25MB HARD DISK & CABLES. ADD $ 780.00 

TO SUBSTITUTE 50MB HD FOR 25MB HD, ADD S 290.00 

TO SUBSTITUTE BOMB HD FOR 25MB HD, ADD $1500.00 

TO SUBSTITUTE 155MB FOR 25MB HD. ADD $2100 00 

60MBTEAC STREAMER WITH ONE TAPE $ 870.00 

PKG 0F5TEACTAPES $ 112.50 

CUSTOM BACK PANEL PLATE (BPPPC) $ 44.00 

.$ 335.00 

The SBC-16S extends the I/O capabilities ol the GMX Micro-20 
68020 Single-board Computer by adding sixteen asynchronous 
serial I/O ports. By using two SBC-16S boards, a total ol Ihirty-six 
serial pons are possible 

.$165.00 

The board provides level-shifting between 1TL level and 
standard RS-232 signal levels lor up to 4 serial I/O poits. 

■rfil I K 'I J JJsTJKJl Hi ■ ill M; ItkM : I iBrf i ! Jl $398.00 

The GMX SBC-60P uses three 68230 Parallel Interlace/Timers 
(Pt/Ts) to provide up to forty-eight parallel I/O lines. The I/O lines 
are bulfered in six groups of eight lines each, with separate buffer 
direction control for each group. Buller direction can be fixed by 
hardware lumpers, or can be software programmable lor 
bidirectional applications 

$75 00 

The SBC-WW provides a means of developing and testing 
custom I/O interface designs lor the GMX Micro-20 68020 Single 
board Computer The board provides areas for both DIP (Dual Inline 
Package) and PGA (Pin Grid Array) devices, and a pre-wired 
memory area tor up to 512K bytes ot dynamic RAM 

■ HH:H«JiMiil;liIM:|iB;M| $195 00 

THe SBC BA provides an interlace between Ihe GMX Micro-20 
68020 Single-board Computer and the Motorola Input/Output 
Channel (I/O bus). With the I/O bus. up 1o sixteen off-the-shelf or 
custom peripheral devices (I/O modules) can be connected to the 
GMX Micro-20 



flRCNFT LAN board w/o Software (SBC-AN 



$475.00 

The SBC-AN provides an interface between the GMX Micro-20 
68020 Single-board Computer and the ARCNET modified token- 
passing Local Area Network (LAN) originally developed by Datapoint 
Corp The ARCNET is a baseband network with a data transmission 
rale of 2.5 Megabits/second The standard transmission media is a 
singie 93 ohm RG-62/U coaxial cable Fiber optic versions are 
available as an option 

0S9LAN Sollware Driver} lor SBC- AN $120.00 



I/O EXPANSION BOARDS 



16POHT SERIAL BOARD ONLY (SBC- 16S) 



RS232 ADAPTER SAB-25. SA8-9D or SAB-8MII 



PROTOTYPING BOARD (SBC-WW) 



GMX MICRO-20 SOFTWARE 



020 BUG UPDATE - PROMS & MANUAL $150.00 

THESE 68020 OPERATING SYSTEMS ARE PRICED 
WHEN PURCHASED WITH THE MlCRO-20. PLEASE 
ADD $150.00 IF PURCHASED LATER FOR THE 
UPDATED PROMS AND MANUALS. ALL SHIPPED 
STANDARD ON SV«" DISKS.3V>" OPTIONAL IF 
SPECIFIED. 



OS9/6B020 PROFESSIONAL PAK $850.00 

Includes O.S.. "C". uMACS EDITOR. ASSEMBLER. DEBUGGER, 
development utilities. 68881 support 

OS9/68020 PERSONAL PAK $ 400.00 

Personal 0S-9 systems require a GMX Mtcro-20 development 
system running Professional 0S-9/68020 for initial configuration. 



Olher Software lor OS-9/68020 


BASIC (included in PERSONAL PAK) .., 


S 200.00 


C COMPILER (included in PROFESSIONAL PAK) 


. $ 750 00 


PASCAL COMPILER 


$ 500.00 


UNIFLEX 


UniFLEX 


$ 450.00 


UniFLEX WITH REAL-TIME ENHANCEMENTS 


$ 800.00 


Other Software lor UniFLEX 



UniFLEX BASIC W/PRECOMPILER S 300.00 

UniFLEX C COMPILER $ 350.00 

UniFLEX COBOL COMPILER $ 750.00 

UniFLEX SCREEN EDITOR ** 150.00 

UniFLEX TEXT PROCESSOR $ 200.00 

UniFLEX SORT/MERGE PACKAGE $ 200.00 

UniFLEX VSAM MODULE S 100.00 

UniFLEX UTILITIES PACKAGE I $ 200.00 

UniFLEX PARTIAL SOURCE LICENSE $1000.00 

GMX EXCLUSIVE VERSIONS, CUSTOMIZED FOR 
THE MICRO-20, OF THE BELOW LANGUAGES 
AND SOFTWARE ARE ALSO AVAILABLE 
FROM GMX. 

ABSOFT FORTRAN (UniFLEX) $1500.00 

SCULPTOR (specify UniFLEX or 0S9) $ 995.00 

FORTH (0S9) $ 595.00 

DYNACALC (specify UniFLEX or 0S9) S 300.00 

GMX DOES NOT GUARANTEE PERFORMANCE OF ANY GMX 
SYSTEMS, BOARDS OR SOFTWARE WHEN USED WITH 
OTHER MANUFACTURERS PRODUCT. 

ALL PRICES ARE FOB. CHICAGO IN U.S. FUNDS 

TO ORDER BY MAIL SEND CHECK OR MONEY ORDER OR USE 
YOUR ViSA OR MASTER CHARGE Please allow 3 weeks tor 
personal checks to clear. US. orders add $5 handling it under 
$200 00 Foreign orders add $10 handling il order is under 
$200.00 Foreign orders over $200.00 will be shipped via Emery Air 
Freight COLLECT, and we will charge no handling All orders must 
be prepaid in U S funds Please note that foreign checks have 
been taking about 8 weeks lor collection so we would advise wiring 
money, or checks drawn on a bank account in the US Our bank is 
the Continental Illinois National Bank ot Chicago. 231 S, LaSalle 
Street. Chicago. IL 60693. account number 73-32033 

CONTACT GMX FOR MORE INFORMATION ON THE ABOVE 
PRODUCTS 

GMX STILL SELLS GIMIX S50 BUS SYSTEMS. BOARDS & PARTS 
CONTACT GMX FOR COMPLETE PRICE LIST 



GfTlX 1337 W. 37th Place. Chicago, IL 60609 (312) 927-5510 — TWX 910-221-4055 — FAX (312) 927-7352 
64 October '87 '68' Micro Journal 




Mj^^the — llStaiV' 



Now Offenng *FLEX" (2 Versions) 
AND 'STAR-DOS PLUS+ '" 




For Otttmrtng Call 

(615)842-4600 



FROM - DATA-COMP, C.P.I. 



A Family of 100% 68XX Support Facilities 

The Folks who FIRST Put FLEX" on 

The CoCo 



vH 






t^*>* 



&.:> 



* 



p^^r^ 



C o1 



«* e 



**%P 



^*" o* 1 



M 



STAR DOS PLUS + 

• Functions Same as FLEX 

• Reads • writes FLEX Disk* 

• Run FLEX Programs 

• Just type: Run 'STAR DOS" 

• Over 300 utilities & programs 
to choose from 



f 


TSC Editor 




NOW $35.00 


L 


y) 



PLUS 

ALL VERSIONS OF FLEX & STAR-DOS 

+ Read-Write-Dir RS Disk 
+ Run RS Basic from Both 
+ More Free UtJities 




INCLUDE 

+ External Terminal Program 
+ Test Disk Program 
+ Disk Examine & Repair Program 
+ Memoty Examine Program 
+ Many Many More!!! 



TSC Assembler 




(bgtMOO 


L 


NOW $35 OO 

1 



CoCo Disk Drive Sgsleuis 



2 TH1NLINE DOUBLE SIDiO DOUBLE DENSITY DISK DRIVES 
SYSTEM WITN FDUEE SUCI-L* .CAIINtT, 01SI OllVE CARLE. JiH 
NEW DISK CONTROLLER JP0-CP VJTH J-OOS.RS-DOS OPERATINC 
SYSTEMS. |4*«.») 

• Spiel (y What CONTROLLER You Want JAN, or RADIO SHBCX 

TMINLINE DOUBLE S1DE0 
DOUBLE DENSITY *0 TRACKS 



MK VPCSAOi 

FOR C.0,E, P, AND COCO II 
RADIO SHACK BASIC I. 2 
EAD10 SHACK DISK BASIC 1.1 



Verhjhm Diskettes 



Sinftlf Sldad Doubl« DtDtity 
Deubl* Sided Double Deoelty 



Cooli oilers 



JtN JPO-CP WITH J-0OS 
WITH J-OOS, KS-OOS 
RADIO SHACK ] . I 

RADIO SHACK Diik CONTROLLER 1.1 



Disk Di ive Ciu!>-'> 



Ceble for One Drive 
Cable for Two Drive* 





DISK OltVE CABINET POl A 


III*. as 


SINGLE (WIVE 




DISK DRIVE CAEINET POl TWO 




TK1NLINE DRIVES 


} 14.00 


nirruj 


} 14.00 


EPSON U-BO 




EPSON HX-70 




EPSON KX-100 


•139. 95 


ACOMoaiE* rot ifboc 


$119. *» 




tiM.aj 


61*6 2E SEEIAL BOARD 


81*9 32K EXPAND TO I2BK 




EPSON MJ-M-UO KIIMNS 


413*. aj 


EPSON LX-80 ElEtONS 




TEACTOE UNITS PO« LX-BO 




CABLES 4 •THE* IHTCK/ACKS 




CALL POR PRICING 


i la.tj 




i 24. as 





I 29.95 



t 24. as 
i 24. as 



* 4».»5 

t ta.as 



B2M.9J 

•us.aj 
$»*i.*i 



JI49.95 

» s.as 



DATA-COMP 

5900 Cassandra Smith Rd 
Hixson. TN 37343 




C3| 


SHIPPING tS* 

f^:^ d ^" s .| (615)842-4600 

n(H. $2.50 'Of OtoWring 

Telex 5106006630 




s 



An Ace of a System in Spades! The New 

MUSTANG-08/A 

Now with 4 aerial porta standard ft speed increase to 12 Mhs CPU + on board battery 
backup and Includes the PROFESSIONAL OS-9 package - tnfhwling the $500.00 06-9 

C compHerl This offer won't last forever! 



NOT 128K, NOT 512K 
FULL 768K No Wait RAM 

The MLSTANG4B™ system took every hand Inn al 
other 68008 syserra we tetod. runnijj OS-9 68KI 

The MUCTAN&08 hdudes OS^SflK™ andbr Peter 
Stark* SKTJOS~ StCOOS is a single user, single taking 
j system thai takes up where *R£X™ toll off. SCOOS Is 
■ aduaty a 68XXX R£X type eySam (Not * TSC fnxkn) 



Now even faster! 
with 12 Mhz CPU 



! 



C CcnnpQe times OS-9 68K. Hard Disk 
IVSTANQ4B BWeCPU OrrtnMe* 

Other poputv SXXB eyskm 1 rrin 05 hc 

MUSTANG420 rrin -21 sac 



J> 




System mr hides OS-9 68K or SCTXB - Your Oiokz 

Specifications: 



CPU 


MC660OB 


12 Mb 


RAM 


76S< 

to Wei 9sise 


25BK Chips 


PORTS 


4-RS232 


MCTO1 DUART 




2-BbtP8raU 


M05821 PM 


aocx 


MK48TQ2 


Real Tn» Cbr* B*. BU 


EPROM 


16K.32KOT64K 


Set**** 


FLOPPY 


WD1772 


5 1M CrMS 


HARD OtSK 


rtBrtsoj Port 


wmoae Bam 



25 Megabyte 
Hard Disk System 



■V Now more serial ports - taster CPU """N 
I Battery B/U - and $850.00 O&O Profes- 1 
■i slonal with C compiler included! . 

See Mustang-02 Ad ■ page 5 



'$400.00 



(or trade-in delate 




MUSTANG-08 



LOOK 



■ VflrwHt 



32 l« Retina 
Beeger Lon» 
.L8.0...9.0 

..8.8. ..6.3 



/■ hit I; V 

register long I; 

tor (bO; I < 090890; ♦*!); 



$1,998.90 

Complete with PROFESSIONAL OS-0 

include the $500.00 C compiler, PC 

style cabin e t, heavy duty power supply, 

5" DDDS SO track floppy. 25 MegByte 

i Hard Disk - Ready to Run } 

Untw other 68008 systems there are several s^re^ar* 
dfbrerces. The MUSTANG-08 is a lull 12 Megahertz system. The 
RAM uses NO wal stales, this means ful bore MUSTANG type 
performance. 

Abo, albwrg lor addressable ROMfROM the RAM is the 
maximum stowed lor a 68008. The 68008 can only address a 
total of 1 Megabytes of RAM. The design allows al the RAM 
apace (for all practical purposes) to be utilized What Is not 
avaiabie to the user Is requred and reserved for the system 

ARAM defe al 480K can be easiy ennflgursd, leavrtg 2S8K 
tree tor OKvarrvsystem RAM space. The RAM DISK can be 
configured to any size your appfeaiiDn requires (system must 
have 128K in adoabn to Is other req ufce m w e a ). Laaving the 
r e m a trier of the ordinal 768K for program use. Sutfber* 
source Included (dnVers, etc) 



MUfTAMMHtoiB 



f 



Data-Comp Division 

A Decade of Quality Service" 




Systans World Wide 

Computer Publishing, Inc. 5900 Casanria Sirtti Road 
Tetedwe 61 5 842-4601 -Telex 510 600^0 Kaon, Tn 37343 



* Those, vth SWTPC rtdenrfty RfX 5' - Cd for specfc* Mb. 



-J